Nginx 使用及配置

启停命令

  • 检查配置文件语法

    nginx -t
  • 热加载,重新加载配置文件

    nginx -s reload
  • 快速关闭

    nginx -s stop
  • 等待工作进程处理完成后关闭

    nginx -s quit 
  • 强制关闭

    ps -ef|grep nginx
    kill -9 ThreaID

全局配置

  • 工作进程数

    worker_processes 1; #工作进程数 根据硬件调整,通常等于CPU数量或者2倍于CPU
    events {
        accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
        multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
        #use epoll;       #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
        worker_connections 1024; # 每个工作进程连接数 默认为512  
    }
  • 日志输出

    access_log logs/access.log access; # 访问日志输出目录 【off】
    error_log logs/error.log; # 错误日志输出目录 日志等级:[notice][info][不填]
    pid logs/nginx.pid;  # 进程标识符输出
    # 自定义日志格式
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    ​
  • 打开文件描述符数目

    worker_rlimit_nofile 65535; #现在在Linux 2.6内核下开启文件打开数为65535
  • 最大链接数

    worker_connections 204800; #没个工作进程的最大连接数量
  • 超时时间

    keepalive_timeout 60s; #指定每个TCP连接最多可以保持多长时间,单位默认是s
    client_body_timeout 20s; #指定客户端与服务端建立连接后发送 request body 的超时时间
    send_timeout 30s; #服务端向客户端传输数据的超时时间
  • 请求头大小配置

    client_header_buffer_size 4k; #客户端请求头部的缓冲区大小。
    large_client_header_buffers 8 128k; #客户请求头缓冲大小
    open_file_cache max=102400 inactive=20s; #指定缓存是否启用
    

代理配置【http&server】

服务配置

http{
    include mime.types; #mime类型 由mime.types文件定义
    default_type  application/octet-stream;
    sendfile        on;
    client_max_body_size 1024M;
    keepalive_timeout 60s
        
    server {
        listen 80; #配置监听端口
        server_name supconit.***.com; #配置访问域名
            
        location ~* \.(mp3|exe)$ { #对以“mp3或exe”结尾的地址进行负载均衡
            #将代理服务器收到的用户信息传到真实服务器上
            proxy_set_header Host $host; # 传递域名
            proxy_set_header X-Real-IP $remote_addr; # 传递ip
            proxy_set_header X-Scheme $scheme; # 传递协议
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
​
            deny 127.0.0.1;  #拒绝的ip
            allow 172.18.5.54; #允许的ip  
        };
        location /my/ {
            proxy_pass http://my_server/;
            proxy_set_header Host $host:$server_port;# 传递域名+端口
            proxy_redirect http://my_server/ http://$host:$server_port/my/; #重定向 将【http://my_server/】重定向到【http://$host:$server_port/my/】
        }
​
         location ^~/km-portal/ {
             try_files $uri $uri/ /index.html;
             index index.html index.htm; 
             root html/hc; # 指定静态文件地址
            }
    }
}

静态资源代理

1、#静态资源目录使用 root alias
  location ~^/files/ {
    root /home/;
    index index.html index.htm;
     # 用root方式,location中的路径会拼加到root的地址后面
     # 请求路径为:http://localhost:8080/files/index.jpg    实际访问为:/home/files/index.jpg
  }
  location ~^/files/ {
    alias /home/;
    index index.html index.htm;
     # 用alias方式,location中的路径不会拼加到alias的地址后面
  # 这请求路径为:http://localhost:8080/files/index.jpg    实际访问为:/home/index.jpg
  }
​
2、# 默认访问
  # 部署路径:/home/web/my_demo
  # 访问路径为:http://localhost:8090/
  location / {
    try_files $uri $uri/ /index.html;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    root /home/web/my_demo/;
    index index.html index.htm;
  }
​
 3、 # 带前缀的访问
  # 部署路径:/home/web/my_demo
  # 访问路径为:http://localhost:8090/my_demo/
  # 如果location路径最后没有配置斜杠,则浏览器输入访问地址后,路径最后会自动拼一个斜杠
  location ^~/my_demo/ {
    try_files $uri $uri/ /my_demo/index.html;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $http_host;
    root /home/web/;
    index index.html index.htm;
  }

后台服务代理

 #################### 第一种场景(代理地址不加斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/api/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际指向为:http://127.0.0.1:8000/api/getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
​
  #################### 第二种场景(代理地址+斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000//getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
​
  #################### 第三种场景(代理地址+后缀) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user/getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/user;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/usergetUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/user;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
​
  #################### 第四种场景(代理地址+后缀+斜杠) ####################
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user/getUser
  location ^~/api/ {
    proxy_pass http://127.0.0.1:8000/user/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }
  # 请求路径为:http://127.0.0.1:8080/api/getUser   实际代理为:http://127.0.0.1:8000/user//getUser
  location ^~/api {
    proxy_pass http://127.0.0.1:8000/user/;
    proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
    proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
  }

负载配置

  • 轮询(默认)

    upstream bakend {
        server 127.0.0.1:8027;
        server 127.0.0.1:8028;
        server 127.0.0.1:8029;
        hash $request_uri;
    }
  • weight(指定轮询几率/权重配置)

    upstream bakend {
        server 192.168.0.14 weight=10;
        server 192.168.0.15 weight=15;
    }
  • ip_hash(每个请求按访问ip的hash结果分配,每个访客固定访问一个后端服务器【根据用户ip分配】)

    upstream bakend {
        ip_hash;
        server 192.168.0.14:88;
        server 192.168.0.15:80;
    }
    ​
    upstream bakend{#定义负载均衡设备的Ip及设备状态}{
        ip_hash;
        server 127.0.0.1:9090 down;
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:6060;
        server 127.0.0.1:7070 backup;
    }
  • fair(【第三方】按后端服务器的响应时间来分配请求,响应时间短的优先分配)

    upstream backend {
        server server1;
        server server2;
        fair;
    }
  • url_hash(【第三方】按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器)

    upstream backend {
        server squid1:3128;
        server squid2:3128;
        hash $request_uri;
        hash_method crc32;
    }
    #在需要使用负载均衡的server中增加
    proxy_pass http://bakend/;
    ​
    upstream backend {
        ip_hash;
        server server1 down; #down表示单前的server暂时不参与负载
        server server2 weight=10; #weight为weight越大,负载的权重就越大。
        server server3 max_fails=10 fail_timeout=60s; #允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误,  fail_timeout:max_fails次失败后,暂停的时间。
        server server4 backup; #其它所有的非backup机器down或者忙的时候,请求backup机器
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值