ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx代理参数配置详解之proxy_pass方法

2022-02-25 21:03:28  阅读:290  来源: 互联网

标签:127.0 http header Nginx set proxy pass


proxy_pass方法主要用于Nginx的代理,其使用方法比较灵活多样,不同的配置也会起到不同的效果,我们来分别了解一下。

1、简单的代理
我们来看一下下面这段代码,作用是在访问域名www.abc.com时,通过Nginx代理到了内网中的127.0.0.10这台服务器的8080端口上,配置时使用的是 / 表示该域名下的所有访问都会指向这里

server {
    listen  80;
    server_name www.abc.com;
    index index.html index.htm index.php;
    access_log /var/log/nginx/99cdtop.access.log  main;
    access_log on;
    location / {
        proxy_redirect off ;
        proxy_set_header Host $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;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_buffer_size 1600k;
        proxy_buffers 4 3200k;
        proxy_busy_buffers_size 6400k;
        proxy_temp_file_write_size 6400k;
        proxy_max_temp_file_size 128m;
        proxy_pass      http://127.0.0.10:8080;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
特别说明:
(1)proxy_set_header相关参数的设置,是为了把所有访问的真实主机信息、IP信息传送给代理服务器,不然对方接收到的全是Nginx服务器的信息,这样对于交互性比较强的网站来说是致命的。
(2)如果访问不同的域名或不同的服务器,最好设置不同的日志文件,这样便于查错,如果不使用则是使用Nginx统一的日志,这样查起来太麻烦。
这一部分下面的配置中将省略!

2、使用upstream方法代理
这个方法主要是方便把单独的代理存储为独立的文件进行区分和设置,可以更好地进行多个服务器的代理设置,包括每个子服务器的权重,以及分发的方式等
这里注意两点:
(1)upstream后面是你当前配置的名称,在后面的proxy_pass参数中要对应
(2)ip_hash表示负载均衡配置,ip_hash的设置可以使每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,备选为url_hash,指按用户的访问URL来进行分配,这样访问相同的URL时会指向同一台服务器,主要用于下载站点之类的,可以节略带宽资源。

upstream abc {
    ip_hash;
    server  127.0.0.10:8080  weight=6;
    server  127.0.0.11:8080  weight=4;
    server  127.0.0.12:8080  down;
}
server {
    listen  80;
    server_name www.99cd.top 99cd.top;
    index index.html index.htm index.php;
    location / {
        proxy_redirect off ;
        proxy_set_header Host $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;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_buffer_size 1600k;
        proxy_buffers 4 3200k;
        proxy_busy_buffers_size 6400k;
        proxy_temp_file_write_size 6400k;
        proxy_max_temp_file_size 128m;
        proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
        proxy_pass    http://abc;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
3、代理中的几点区别
在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。
假设下面四种情况分别用 http://127.0.0.1/proxy/test.html 进行访问。

第一种:

location /proxy/ {
    proxy_pass http://127.0.0.1/;
}
1
2
3
代理到URL:http://127.0.0.1/test.html

第二种(相对于第一种,最后少一个 / )

location /proxy/ {
    proxy_pass http://127.0.0.1;
}
1
2
3
代理到URL:http://127.0.0.1/proxy/test.html

第三种:

location /proxy/ {
    proxy_pass http://127.0.0.1/abc/;
}
1
2
3
代理到URL:http://127.0.0.1/abc/test.html

第四种(相对于第三种,最后少一个 / )

location /proxy/ {
    proxy_pass http://127.0.0.1/abc;
}
1
2
3
代理到URL:http://127.0.0.1/abctest.html
————————————————
版权声明:本文为CSDN博主「九丝城主」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_48803304/article/details/107876414

标签:127.0,http,header,Nginx,set,proxy,pass
来源: https://blog.csdn.net/wangbaosongmsn/article/details/123140891

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有