首页
直播
电影
视频
更多
壁纸
留言
友链
关于
统计
推荐
我的影视
蜻蜓工具
蛙蛙工具
Ai照片工具
帮小忙
APi
二次元api
字节海api
颜色代码表
Search
1
飞牛fnos自动部署并自动更新ssl证书
209 阅读
2
飞牛OS通过compose安装苹果cmsv10
74 阅读
3
飞牛NAS自建影视-MoonTV
61 阅读
4
音乐收藏
51 阅读
5
飞牛Fnos装typecho(docker)
47 阅读
随手记
技术分享
教程分享
ubuntu
typecho
web前端
服务器
转载分享
影视
音乐
卡点伴奏
登录
Search
标签搜索
typecho
joe
web前端
ubuntu
教程
分享
服务器
无心 ૮₍°°₎ა 博客
累计撰写
43
篇文章
累计收到
2
条评论
首页
栏目
随手记
技术分享
教程分享
ubuntu
typecho
web前端
服务器
转载分享
影视
音乐
卡点伴奏
页面
直播
电影
视频
壁纸
留言
友链
关于
统计
推荐
我的影视
蜻蜓工具
蛙蛙工具
Ai照片工具
帮小忙
APi
二次元api
字节海api
颜色代码表
用户登录
登录
搜索到
1
篇与
ubuntu
的结果
2025-05-26
nginx 的 server 块配置解析
http { server_tokens off; # 隐藏版本号 # 想要彻底清除 Server 响应头可以选择 ngx_headers_more 模块,这个模块需要额外安装。或者直接安装 nginx-extras 包也会带上这个模块。 more_clear_headers Server; # 清除 Server 响应头 # 阻止ip访问 server { # default_server 是一个配置参数,用于指定当请求的域名(Host 头)没有匹配任何 server 块时,Nginx 应该使用哪个 server 块来处理这些请求。 listen 443 ssl default_server; server_name _; # 匹配所有未配置的域名或IP,这样设置了 default_server 的 server 块(即本块)就会处理所有未匹配的请求。 ssl_certificate 证书.pem; # 签名证书路径,相对路径、绝对路径都可以 ssl_certificate_key 私钥.key; # 私钥路经 return 403; # 返回禁止访问 } # https配置模板 server { # https的默认端口是443,只有把端口写成443,登录网站的时候才不需要写端口号 listen 443 ssl; # [::] 是 IPv6 的通配符地址,表示监听所有可用的 IPv6 地址(类似于 IPv4 的 0.0.0.0) listen [::]:443 ssl; # Nginx 会先检查请求的域名是否与某个 server_name 精确匹配, # 如果没有精确匹配,会尝试使用通配符匹配。如果没有找到匹配的 server_name,Nginx 会将请求交给 default_server 的 server 块。 server_name 这里写你的域名; # ssl配置,证书可以使用免费的Let's Encrypt生成,阿里云上也有,但是签名需要域名, # 不需要域名的可以自己使用 openssl 创建自签名证书,但是自签名证书不受信任 ssl_certificate 证书.pem; # 签名证书路径,nginx支持pem格式的证书 ssl_certificate_key 私钥.key; # 私钥路经 # 启用ssl协议,强制使用 TLS 1.2 和 1.3 版本 ssl_protocols TLSv1.2 TLSv1.3; # 启用加密套件,加密套件的顺序用冒号分隔。很重要,Nginx 会按照这个顺序选择一个加密套件 ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; # 强制性要求浏览器在加密连接时优先使用 服务器端 的加密套件 ssl_prefer_server_ciphers on; # 会话缓存:会话缓存能够存储客户端和服务器之间建立的 SSL/TLS 会话,避免每次请求都重新建立完整的握手过程,从而提升性能,减少 CPU 使用。通常 1 MB 可以存储大约 4000 个会话。 ssl_session_cache shared:SSL:1m; # 会话缓存时间:用于设置 SSL 会话缓存中会话的过期时间。在指定时间内,客户端可以重用之前缓存的会话,对于大多数网站,设置为 5m(5 分钟)到 10m(10 分钟)是合理的范围。 ssl_session_timeout 5m; # 向 HTTP 响应中添加自定义的 HTTP 头部信息。语法:add_header <header_name> <value> [always]; # add_header 指令可以写在 http、server 或 location 块中,作用范围会逐级缩小。如果多个级别的 add_header 冲突,优先使用最具体(内层)的配置。 # 强制客户端使用 HTTPS 访问,防止中间人攻击。 # max-age=31536000:缓存 1 年。includeSubDomains:对子域生效。preload:允许加入浏览器 HSTS 预加载列表。 # [always]: 默认情况下,add_header 只会在响应状态码为 200、204、206、301、302、303 或 304 时添加。如果加上 always 参数,头部会在所有响应中添加(包括错误状态码,如 404 或 500)。 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; # 只允许特定的 HTTP 方法。 add_header Access-Control-Allow-Methods "GET, POST, OPTIONS"; # 限制加载资源的来源,防止恶意脚本注入。 # default-src 'self' 仅允许加载本域的资源。如果你不熟悉域的概念就别用 # script-src 'self' 'unsafe-inline' 限制脚本加载来源,仅允许本域和内联脚本。如果你不熟悉域的概念就别用 # img-src 'self' data: 限制图片来源,仅允许本域和 data: 协议。 add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; img-src 'self' data:;"; # 启用 gzip 压缩,优化传输速度和网络带宽使用。 gzip on; # 文件大于 1KB 才压缩,对于小文件(小于 1KB 的资源),压缩的效果不明显,还可能导致处理开销增加,因此跳过。 gzip_min_length 1024; # 设置压缩等级为 5,这是一种性能和压缩比的折中选择。Gzip 压缩需要消耗服务器的 CPU 资源,过高的压缩等级可能增加服务器的负载。推荐压缩等级为 4~6。 gzip_comp_level 5; # 指定要压缩的资源类型:text/plain: 纯文本文件。text/css: CSS 样式表文件。application/json: JSON 数据(比如 API 响应)。 # application/javascript: JavaScript 文件。text/xml 和 application/xml: XML 文件。image/svg+xml: 矢量图片(SVG 格式)。 # 图片文件通常不需要 Gzip 压缩。他们已经是高度压缩了。 gzip_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml; # 添加 Vary: Accept-Encoding 头部用于通知缓存服务器根据客户端是否支持 Gzip 压缩返回不同的内容。 gzip_vary on; # 为所有代理请求启用压缩,适用于反向代理场景。 gzip_proxied any; # location 指令用于定义一个位置块,它根据请求的 URI 匹配特定的路径。location也可以嵌套在其他location块中。 # 前端代理,根路径 / 指向静态文件 index/index.html。 location / { # 指定静态文件的根目录 root html/course; # 指定当请求为url目录时,默认返回的页面 index index/index.html; } # 后端代理,将 /api/ 开头的请求转发到后端服务器的 http://localhost:5000 上 location /api/ { # proxy_pass 指定代理的后端服务器的地址。 # 注意:http://localhost:5000/ 和 http://localhost:5000 所代表的url拼接规则是不一样的。自己去搜 proxy_pass 参数怎么用 proxy_pass http://localhost:5000/; # proxy_set_header 用于设置转发给后端服务器的请求头部。 # Host头部保持了原始请求的Host值。 proxy_set_header Host $host; # X-Real-IP头部记录了原始客户端的IP地址。 proxy_set_header X-Real-IP $remote_addr; # X-Forwarded-For头部是一个逗号分隔的列表,包含了从客户端到代理服务器的所有IP地址(包括客户端的IP地址)。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # X-Forwarded-Proto头部记录了原始请求使用的协议(如http或https)。 proxy_set_header X-Forwarded-Proto $scheme; } # WebSocket 代理,我使用的是 flask_socketio,请根据实际情况修改匹配的url location /socket.io/ { proxy_pass http://localhost:5000; # 这里必须使用 http1.1 版本,因为1.1版本才是长连接 proxy_http_version 1.1; # 设置 Upgrade 请求头,用于处理协议升级(从 HTTP 升级到 WebSocket)。 proxy_set_header Upgrade $http_upgrade; # 强制将 Connection 设置为 "upgrade",以支持协议切换。 proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 设置超时时间为 60 秒,用于保持 WebSocket 连接。 proxy_read_timeout 60s; } # 单独按文件类型配置静态资源,可以单独为图片、CSS、JS 文件设置不同的缓存策略。 # 也可以写到某页的 location 块中。比如: # location / { # root html/course; # index index/index.html; # expires 30d; # add_header Cache-Control "public, max-age=2592000"; # } # 这里我选择统一缓存网站的所有静态资源,使用正则表达式匹配文件后缀。每页的 location 块中也可以单独配置,如上。 # 配置图片、视频缓存 location ~* \.(jpg|jpeg|png|gif|ico|svg|webp|mp4)$ { # 必须设置 root 参数,指定静态文件的根目录。不然无法找到静态文件。 root html/course; # 设置静态资源的缓存时间为 30 天。 expires 30d; # 设置浏览器缓存策略。public:表示该资源可以被任何缓存(包括浏览器缓存和中间代理缓存)存储和共享。max-age=2592000 表示缓存时间为 30 天。 # 浏览器在 30 天内不会重新请求资源,直接从本地缓存加载。 add_header Cache-Control "public, max-age=2592000"; } # 配置 CSS 和 JS 文件缓存 location ~* \.(css|js)$ { root html/course; expires 1d; # 缓存 1 天 add_header Cache-Control "public, max-age=86400"; } # 页面资源(HTML 文件) location ~* \.(html)$ { root html/course; add_header Cache-Control "no-cache, no-store, must-revalidate"; # 确保内容实时更新 } # 防止访问隐藏文件(如 .git 文件) location ~ /\. { deny all; } # 404错误页面配置:当请求的文件不存在时,转入 /404.html 页面 error_page 404 /404.html; # 匹配 /404 错误页面,=表示精确匹配 location = /404.html { # 指定 404.html 页面的位置 root /usr/share/nginx/html/404.html; } } }
2025年05月26日
17 阅读
0 评论
1 点赞