• nginx反向代理配置及常见指令


    nginx配置文件: /usr/local/nginx1.16.1/conf/nginx.conf


    nginx.conf默认的server配置:

    server{
        listen        80;
        server_name    localhost;
        location / {
            root    html;
            index    index.html index.htm;
        }
        
        error_page    500 502 503 504    /50x.html;
    }

    配置location时,优先配置子目录,最后是默认根目录。比如下面,先配置/ent-boot/,这样,如果用户的请求地址是/ent-boot/这个路径,nginx当扫描到这个/ent-boot/后,就直接做转发不再继续扫描配置了。
    其中,proxy_pass:表示代理转发,将请求转发到指定的url上。

    server {
        listen        9999;
        server_name    localhost;
        location /ent-boot/ {
            proxy_pass http://192.168.40.84:8802/ent-boot/;
        }
        
        location / {
            root    /www/front/;
            index    index.html index.htm;
        }
    }

    proxy_pass指令用于设置被代理服务器的地址。可以是主机名称、IP地址加端口号的形式。
    例如如下配置:

    server {
        listen        80;
        server_name    buguge.com www.buguge.com;
        
        location /proxy/ {
            proxy_pass ***;
        }
    }

    当访问 http://buguge.com/news/a.html 时,

    1. proxy_pass: http://127.0.0.1:9999/; #则,代理到URL: → http://127.0.0.1:9999/a.html
    2. proxy_pass: http://127.0.0.1:9999; #则,代理到URL: → http://127.0.0.1:9999/news/a.html
    3. proxy_pass: http://127.0.0.1:9999/article/; #则,代理到URL: → http://127.0.0.1:9999/p/a.html
    4. proxy_pass: http://127.0.0.1:9999/article; #则,代理到URL: → http://127.0.0.1:9999/articlea.html

    为了方便记忆和规范配置,建议所有的 proxy_pass 后的url都以“/”结尾。参考:https://www.cnblogs.com/yyxianren/p/10831511.html


    如果反向代理到别的域名的网站上,要指定请求头的Host的值为那个域名,否则会导致代理出现死循环。参考:https://blog.csdn.net/bowei026/article/details/90417914

    要实现负载均衡,要使用upstream指令。

    upstream emei_server {
        ip_hash;
        server 10.0.2.75:9083 weight=10 max_fails=0;
        server 10.0.2.76:9083 weight=10 max_fails=0;
    }
    server{
        ...
        location / {
                       proxy_pass http://emei_server;
                       proxy_set_header        Host $host;
                       proxy_set_header        REMOTE-HOST $remote_addr;
                       proxy_set_header        X-Real-IP  $remote_addr;
                       proxy_set_header        remote-addr $remote_addr;
                       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                       client_max_body_size    100m;
                       client_body_buffer_size 512k;
                       proxy_connect_timeout   300;
                       proxy_send_timeout      300;
                       proxy_read_timeout      300;
                       proxy_buffers           4 256k;
                               proxy_buffer_size        256k;
                       proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504 http_404;
                       proxy_busy_buffers_size 256k;
                }
                    
    }

    ip_hash:可以确保访问一个被同一台服务器处理, 除非分配的server宕机。 如果宕机 则请求被发往其他的机器。适用于需要登录并且session仅保存在自己节点里的站点。

    参考:Nginx的upstream反向代理、负载均衡详解 https://www.cnblogs.com/hoaprox/p/10132409.html
    nginx负载均衡的策略有轮询、权重轮询、ip_hash、url_hash等。参考:nginx配置-upstream https://www.jianshu.com/p/ab7cf5484e8f

  • 相关阅读:
    CC2640R2F&TI-RTOS 拿到 TI CC2640R2F 开发板 第三件事就是使用 TI-RTOS 创建 一个任务 和 使用 信号量 超时来闪烁 LED灯
    +QFTPOPEN: 603,0 怎么把这样一个字符串中的 603 提取出来给一个 uint32_t 的变量那
    hiero_v2.0的下载安装和使用
    ubuntu server小技巧(不定期更新)
    ubuntu-12.04.1-desktop-x64下JDK环境的安装与配置
    Android开发环境搭建
    《搜索引擎营销》概要整理
    记一次zabbix排错(数据库安装在其它服务器上)
    centos7新增硬盘
    centos7的主机名配置
  • 原文地址:https://www.cnblogs.com/buguge/p/12097449.html
Copyright © 2020-2023  润新知