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性能,建议开启,根据实际情况配置

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也可以有多个
#权重
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 如果路径匹配那么不测试正则表达式
# 路由
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 表示代理转发

  

 posted on 2023-09-05 17:39  boye169  阅读(82)  评论(0编辑  收藏  举报