使用 include 指令簡化 Nginx 配置

爲了方便nginx維護,一般反向代理通過分配置文件管理,所以用到include指令

簡化前的配置 nginx.conf

user              nobody nobody;
worker_processes  4;
pid               logs/nginx.pid;
error_log         logs/error.log error;
events {
    use                 epoll;
    worker_connections  1024;
}
http {
    include           mime.types;
    include           proxy.conf;
    sendfile          on;
    tcp_nopush        on;
    tcp_nodelay       off;
    keepalive_timeout 0;
    default_type      application/octet-stream;
    upstream backend {
        server        192.168.1.188:8080 srun_id=c1 weight=1;
        jvm_route     $cookie_JSESSIONID reverse;
    }
    server {
        listen        80;
        server_name   foo.com;
        index         index.html index.htm;
        access_log    logs/access.log;
        location / {
            proxy_pass http://backend;
            proxy_redirect              off;
            proxy_set_header            Host            $host;
            proxy_set_header            X-Real-IP       $remote_addr;
            proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size        50M;
            client_body_buffer_size     256k;
            proxy_connect_timeout       600;
            proxy_send_timeout          300;
            proxy_read_timeout          300;
            proxy_buffer_size           4k;
            proxy_buffers               4 32k;
            proxy_busy_buffers_size     64k;
            proxy_temp_file_write_size  64k;
        }
        location /status {
            stub_status    on;
            access_log     off;
            allow          all;
            deny           all;
        }
    }
}

使用 include 指令簡化配置文件

抽取 proxy 設置到單獨文件中(conf/proxy.conf

proxy_redirect              off;
proxy_set_header            Host            $host;
proxy_set_header            X-Real-IP       $remote_addr;
proxy_set_header            X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size        50M;
client_body_buffer_size     256k;
proxy_connect_timeout       600;
proxy_send_timeout          300;
proxy_read_timeout          300;
proxy_buffer_size           4k;
proxy_buffers               4 32k;
proxy_busy_buffers_size     64k;
proxy_temp_file_write_size  64k;

抽取 status 設置到單獨文件中(conf/status.conf

location /status {
    stub_status    on;
    access_log     off;
    allow          all;
    deny           all;
}

抽取雜項配置到單獨文件中(conf/misc.conf

sendfile          on;
tcp_nopush        on;
tcp_nodelay       off;
keepalive_timeout 0;
default_type      application/octet-stream;

新增存放反向代理目錄,每一個反向代理都分配置文件

  1. 新增目錄conf/conf.d\color{red}{conf/conf.d}目錄
  2. 新增反向代理配置,如後臺的反向代理conf/conf.d/backend.conf\color{red}{conf/conf.d/backend.conf}
server {
    listen      80;
    server_name foo.com;
    charset     utf-8;
    index       index.html index.htm;
    access_log  logs/access.log;
    location / {
        proxy_pass http://backend;
    }
    include     status.conf;
}

最終簡化後的配置

user              nobody nobody;
worker_processes  4;
pid               logs/nginx.pid;
error_log         logs/error.log error;
events {
    use                 epoll;
    worker_connections  1024;
}
http {
    include   mime.types;
    include   proxy.conf;
    incluee   misc.conf;
    upstream backend {
        server      192.168.1.188:8080 srun_id=c1 weight=1;
        jvm_route   $cookie_JSESSIONID reverse;
    }
    # 配置目錄下全部引入
    include /etc/nginx/conf.d/*.conf;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章