zoukankan      html  css  js  c++  java
  • Nginx 配置模板

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
    
        client_max_body_size 100m;
    
        include       mime.types;
        default_type  application/octet-stream;
    
        #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
        #                  '$status $body_bytes_sent "$http_referer" '
        #                  '"$http_user_agent" "$http_x_forwarded_for"';
    
        #access_log  logs/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
    
        # http://culture.example.com
        server {
            listen         80;
            server_name    culture.example.com;
    
            location / {
                proxy_pass http://192.168.1.111:8080;
            }
        }
    
        # http://game.example.com
        server {
            listen         80;
            server_name    game.example.com;
    
            location / {
                proxy_pass http://192.168.1.111:8081;
            }
        }
    
        # http://rank.example.com
        server {
            listen         80;
            server_name    rank.example.com;
    
            location / {
                proxy_pass http://192.168.1.111:8082;
            }
        }
    
        # http://console.example.com 代理前端页面
        server {
            listen         80;
            server_name    console.example.com;
    
            location / {
                proxy_pass http://console.example.com:9527;
            }
        }
    
        # http://html.example.com
        server {
            listen       80;
            server_name  html.example.com;
    
            location / {
                 try_files $uri $uri/ /index.html;
                 root   /home/example/html;
                 index  index.html#/login;
            }
    
            location @router {
                 rewrite ^.*$ /index.html last;
            }
        }
    
        # 负载配置 weight 请求分配的权重
        upstream test.example.com {
            server 192.168.1.111:8088 weight=2;
            server 192.168.1.112:8088 weight=3;
            server hello.example.com:8088 weight=1;
        }
    
        server {
            listen 80;
    
            location / {
                proxy_pass http://test.example.com;
            }
        }
    
        # http://console.example.com 后台管理前端
        server {
            listen       9527;
            server_name  console.example.com;
            client_max_body_size    1000M;
            # 解决跨域问题
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods *;
            add_header Access-Control-Allow-Headers *;
            #root   D:/software/nginx-1.14.0/dist;
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            if ($request_method = 'OPTIONS') {
                return 204;
            }
    
            location / {
                # root html;
                root /home/admin/front/dist;
                try_files $uri $uri/ @router;
                index  index.html index.htm;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    
            # 解决页面刷新问题
            location @router {
                rewrite ^.*$ /index.html last;
            }
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
        }
    }
    

    upstream模块

    server指令:配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口。通过上面的配置,Nginx默认将请求依次分配给111,112,113来处理,可以通过修改下面这些参数来改变默认的分配策略:

    • weight
      默认为1,将请求平均分配给每台server
    upstream test.example.com {
    	server 192.168.1.111:8888 weight=2;  # 2/6次
    	server 192.168.1.112:8888 weight=3;  # 3/6次
    	server 192.168.1.113:8888 weight=1;  # 1/6次
    }
    

    上例配置,表示6次请求中,111分配2次,112分配3次,113分配1次

    • max_fails
      默认为1。某台Server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态,然后将请求发给定义了proxy_next_upstream, fastcgi_next_upstream, uwsgi_next_upstream, scgi_next_upstream, and memcached_next_upstream指令来处理这次错误的请求。
    • fail_timeout
      默认为10秒。某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它
    upstream test.example.com {
        server 192.168.1.111:8888 weight=2 max_fails=3 fail_timeout=15;
        server 192.168.1.112:8888 weight=3;
        server 192.168.1.113:8888 weight=1;
    }
    

    192.168.1.111这台机器,如果有3次请求失败,nginx在15秒内,不会将新的请求分配给它。

    • backup
      备份机,所有服务器挂了之后才会生效
    upstream test.example.com {
        server 192.168.1.111:8888 weight=2 max_fails=3 fail_timeout=15;
        server 192.168.1.112:8888 weight=3;
        server 192.168.1.113:8888 backup;
    }
    

    在111和112都挂了之前,113为不可用状态,不会将请求分配给它。只有当111和112都挂了,113才会被启用。

    • down
      标识某一台server不可用。可能能通过某些参数动态的激活它吧,要不真没啥用。
    upstream test.example.com {
        server 192.168.1.111:8888 weight=2 max_fails=3 fail_timeout=15;
        server 192.168.1.112:8888 down;
        server 192.168.1.113:8888 backup;
    }
    

    表示112这台Server为无效状态,不会将请求分配给它。

    • max_conns
      限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0,表示不限制。注意:1.5.9之后的版本才有这个配置
    upstream test.example.com {
        server 192.168.1.111:8888 max_conns=1110;
    }
    

    表示最多给111这台Server分配1110个请求,如果这台Server正在处理1110个请求,nginx将不会分配新的请求给到它。假如有一个请求处理完了,还剩下999个请求在处理,这时nginx也会将新的请求分配给它。

    • resolve
      将server指令配置的域名,指定域名解析服务器。需要在http模块下配置resolver指令,指定域名解析服务
    http {
        resolver 192.168.1.2;
    
        upstream u {
            zone ...;
            ...
            server hello.example.com resolve;
        }
    }
    

    上面配置表示hello.example.com域名,由192.168.1.2服务器来负责解析。(私有域名服务器可自行部署,不然也可以使用阿里云或者华为云服务提供的域名解析服务)
    upstream模块server指令的其它参数和详细配置说明,请参考官方文档

    作者:jockming
    写博文不易,希望大家多多支持。评论一定一一回复
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    power desinger 学习笔记<五>
    power desinger 学习笔记<四>
    power desinger 学习笔记<八>
    kill session真的能杀掉进程吗
    转: Oracle AWR 报告 每天自动生成并发送邮箱
    Bootstrap 图片
    Bootstrap历练实例:禁用的按钮
    Bootstrap历练实例:点击激活的按钮
    Bootstrap历练实例:块级按钮
    Bootstrap历练实例:超小的按钮
  • 原文地址:https://www.cnblogs.com/jockming/p/14849638.html
Copyright © 2011-2022 走看看