worker_processes
设置 worker 的数量,Nginx的进程模型采用的是master、worker模式,一个master负责协调,多个worker负责与客户端交互。此处设置为 auto 即可
events
- 设置使用的模型和每个 worker 的连接数。
- Linux操作系统中模型建议使用 epoll。
- worker 的连接数通常设置为 10240 即可,当然如果硬件资源非常好,也可以适当加大。
include
包含另一个文件的内容,将另一个文件的内容放在标记处。
多个文件可以写多个 include,也可以使用通配符匹配多个文件。
sendfile 和 tcp_nopush
sendfile: 设置文件高效传输是否开启,默认开启。
tcp_nopush:必须是 sendfile 值为 on 时才有效,当 tcp_nopush 设置为 on 代表当数据包累计到一定大小时再发送,有助于提升文件传输效率。
建议都设置为 on。
gzip
设置为 on,代表会先将数据压缩再进行传输,这样做会增加传输的效率,节省带宽,但会影响服务器CPU的性能。
开启此配置,还需要配置一些额外的属性。
此处可以权衡是节省带宽还是提高CPU性能,建议开启,根据实际情况配置
1 2 3 | gzip on;gzip_min_length 512; # 限制最小压缩,单位字节,小于该值则不会压缩 gzip_comp_level 5; # 压缩的级别,值为1到9,级别越高压缩的比例越大,cpu消耗越多 gzip_types text /plain application /javascript text /css image /jpeg image /gif image /png application /json ; # 需要压缩的文件类型 |
server
- 一个server块就是一个虚拟的服务。
- 在server块中可以指定虚拟服务的 端口、服务名、路由规则等信息。
- server可以有多个。
- 一个server下,location也可以有多个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #权重 upstream my_test_server { server 192.168.0.100:8080 weight=1; server 192.168.0.101:8080 weight=2; server 192.168.0.102:8080 weight=3; } upstream proxyserver { server localhost:18080; server localhost:28080; } server { listen 60000; server_name localhost; # 浏览器访问域名 charset utf-8; access_log /etc/nginx/logs/localhost60000 .access.log access; location /returntest { # 结尾不带/,则用proxy_pass+location,结尾带/,则只使用proxy_pass proxy_pass http: //proxyserver/ ; } } server { listen 80; # 端口 server_name localhost; # 服务名,可以是IP地址或者域名,当端口相同时,会根据服务名选择走哪个路由规则 location / { proxy_pass http: //my_test_server ; } location ~ .*\.(html|jpg|txt|js|css) { #正则表达式匹配,*代表不区分大小写 root /data/web ; # 对应nginx安装目标下的html文件夹,也可以设置为绝对路径,例如:root /home/html; index index.html index.htm; # 指定默认首页为 hello.html add_header 'Access-Control-Allow-Origin' '*' ; #指定允许跨域访问的源站,可以使用 * 表示允许任何来源跨域访问 add_header 'Access-Control-Allow-Credentials' 'true' ; #指定是否允许发送 Cookie 和 HTTP 认证信息 add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS' ; #指定允许跨域请求的 HTTP 方法 add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization' ; #指定允许的自定义请求头部 proxy_pass http: //127 .0.0.1:5000; } error_page 500 502 503 504 /50x .html; # 指定这些状态码跳转的错误页 location = /50x .html { root html; } } |
location的匹配规则详解
语法规则: location [=|~|~*|^~] /uri/ { … }
- = 严格匹配。如果请求匹配这个location,那么将停止搜索并立即处理此请求
- ~ 区分大小写匹配(可用正则表达式)
- ~* 不区分大小写匹配(可用正则表达式)
- !~ 区分大小写不匹配
- !~* 不区分大小写不匹配
- ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # 路由 location / { root /etc/nginx/html ; # 访问/etc/nginx/html/index.html index index.html index.htm; # 入口文件 } location /html/ { root /etc/nginx ; # 访问/etc/nginx/html/other/index.html index index.html index.htm; # 入口文件 } location /htmlalias/ { alias /etc/nginx/html/ ; index index.html index.htm; } location /producterone/ { proxy_pass http: //172 .18.0.4:8080; #转发到其他服务http://172.18.0.4:8080//producterone/say } location /returnok/ { return 200 "success" ; #返回200和消息 } #root 实际访问文件路径会拼接URL中的路径 #alias 实际访问文件路径不会拼接URL中的路径 #proxy_pass 表示代理转发 |
分类:
nginx
标签:
nginx配置详解
, nginx.conf
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?