请选择 进入手机版 | 继续访问电脑版

Nginx location 和 proxy_pass路径设置 题目 小结

[复制链接]
查看126 | 回复19 | 2021-9-13 17:42:07 | 显示全部楼层 |阅读模式
目次

本文是基于 location 的匹配末了 是否设置

  1. /
复制代码
和 proxy_pass 末了 是否设置
  1. /
复制代码
,举行 测试,完全还原了整个测试过程。帮助相识 详细 的环境 。

一、Nginx location 基本设置

1.1、Nginx 设置 文件

  1. upstream test1{
  2. server 127.0.0.1:8000;
  3. }
  4. upstream test2{
  5. server 127.0.0.1:8000;
  6. }
  7. server{
  8. server_name test.com;
  9. listen 80;
  10. access_log /usr/local/openresty/nginx/logs/test.com_access.log latest;
  11. error_log /usr/local/openresty/nginx/logs/test.com.log error;
  12. proxy_set_header Host $host;
  13. proxy_set_header X-Real-IP $remote_addr;
  14. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  15. proxy_connect_timeout 3s;
  16. proxy_read_timeout 120s;
  17. proxy_send_timeout 120s;
  18. proxy_next_upstream error timeout invalid_header http_404 http_502 http_504 http_500;
  19. location /user/ {
  20. proxy_set_header Connection "";
  21. proxy_http_version 1.1;
  22. proxy_pass http://test1/;
  23. }
  24. location / {
  25. proxy_set_header Connection "";
  26. proxy_http_version 1.1;
  27. proxy_pass http://test2/;
  28. }
  29. }
复制代码

1.2 、Python 脚本

python2 可以运行

该脚本用于获取哀求 内容。 这个作为后端,也就是 proxy_pass 代理的后端。

  1. #!/usr/bin/env python
  2. import SimpleHTTPServer
  3. import SocketServer
  4. PORT = 8000
  5. class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
  6. def do_GET(self):
  7. print(self.headers)
  8. self.send_response(200, "")
  9. def do_POST(self):
  10. print(self.headers)
  11. content_length = self.headers.getheaders('content-length')
  12. length = int(content_length[0]) if content_length else 0
  13. print(self.rfile.read(length))
  14. self.send_response(200, "")
  15. Handler = GetHandler
  16. httpd = SocketServer.TCPServer(("", PORT), Handler)
  17. httpd.serve_forever()
复制代码

二、测试

2.1、测试 location

末了 存在

  1. /
复制代码
和 proxy_pass末了 存在
  1. /
复制代码

nginx设置 如下

  1. location /user/ {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1/;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: f2bfe770-4f44-4ee9-91c4-060f59dfb26c
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 16:54:26] "POST /test.html HTTP/1.1" 200 -
复制代码

小结论:proxy_pass 地址加了

  1. /
复制代码
的话, 哀求
  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1/test.html
复制代码

2.2、测试 location

末了 存在

  1. /
复制代码
和 proxy_pass末了 不存在
  1. /
复制代码

nginx设置 如下

  1. location /user/ {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: e33d0a2c-1965-4152-b87c-94fca50f2899
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 16:57:18] "POST /user/test.html HTTP/1.1" 200 -
复制代码

小结论: proxy_pass 地址不加了

  1. /
复制代码
的话, 哀求
  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1/user/test.html
复制代码

2.3、测试三 location

不加末了

  1. /
复制代码
且 proxy_pass 不加 末了
  1. /
复制代码

nginx设置 如下

  1. location /user {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: 31cd33c6-4c95-41b5-a095-28cdc7113dcd
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 16:59:34] "POST /user/test.html HTTP/1.1" 200 -
复制代码

哀求

  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1/user/test.html
复制代码

2.4、location 不加

末了

  1. /
复制代码
且 proxy_pass 加 末了
  1. /
复制代码

nginx设置 如下

  1. location /user {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1/;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: d0f4b83f-6482-41ba-8a01-c059eececc2d
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 17:00:21] "POST //test.html HTTP/1.1" 200 -
复制代码

哀求

  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1//test.html
复制代码

2.5、location 末了

  1. /
复制代码
proxy_pass 末了 其他有路径,且末了 加
  1. /
复制代码

nginx设置 如下

  1. location /user/ {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1/haha/;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: 6447cf0b-5988-4f96-81a4-2b621fe32604
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 17:03:27] "POST /haha/test.html HTTP/1.1" 200 -
复制代码

哀求

  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1/haha/test.html
复制代码

2.6、 location 末了

  1. /
复制代码
proxy_pass 末了 其他有路径,且末了 不加
  1. /
复制代码

nginx设置 如下

  1. location /user/ {
  2. proxy_set_header Connection "";
  3. proxy_http_version 1.1;
  4. proxy_pass http://test1/haha;
  5. }
复制代码

哀求 url

  1. test.com/user/test.html
复制代码

后端内容

打印的内容:

  1. Host: test1
  2. Content-Length: 0
  3. User-Agent: PostmanRuntime/7.26.8
  4. Accept: */*
  5. Postman-Token: 32fb2a50-1e7c-4131-9804-1828e21ca841
  6. Accept-Encoding: gzip, deflate, br
  7. 127.0.0.1 - - [10/Apr/2021 17:05:03] "POST /hahatest.html HTTP/1.1" 200 -
复制代码

哀求

  1. test.com/user/test.html
复制代码
现实 哀求 是
  1. http://test1/hahatest.html
复制代码

三、总结

序号 访问URL location设置 proxy_pass设置 后端吸取 的哀求 备注
1 test.com/user/test.html /user/ http://test1/ /test.html
2 test.com/user/test.html /user/ http://test1 /user/test.html
3 test.com/user/test.html /user http://test1 /user/test.html
4 test.com/user/test.html /user http://test1/ //test.html
5 test.com/user/test.html /user/ http://test1/haha/ /haha/test.html
6 test.com/user/test.html /user/ http://test1/haha /hahatest.html

留意 上表格中的后端是指 python 脚本对应的web服务。

在一样平常 的web网站部署中,常常 会用到

  1. nginx
复制代码
  1. proxy_pass
复制代码
反向代理,有一个设置 必要 弄清晰 :设置
  1. proxy_pass
复制代码
时,

  • 当在后面的
    1. upstram_name
    复制代码
    后面出现了
    1. /
    复制代码
    ,相称 于是绝对根路径,则
    1. nginx
    复制代码
    不会把
    1. location
    复制代码
    中匹配的路径部分代理走;
  • 假如 没有
    1. /
    复制代码
    ,则会把匹配的路径部分也给代理走。

到此这篇关于Nginx location 和 proxy_pass路径设置 详解的文章就先容 到这了,更多相干 Nginx location 和 proxy_pass路径设置 内容请搜索 脚本之家从前 的文章或继续欣赏 下面的相干 文章渴望 大家以后多多支持脚本之家!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

avatar 五题架转困 | 2021-9-13 21:28:42 | 显示全部楼层
楼上的忘记吃药了!
回复

使用道具 举报

avatar 务川冷泉水鱼庄 | 2021-9-19 09:05:30 | 显示全部楼层
在哪里跌倒,就在那里多爬一会儿!
回复

使用道具 举报

avatar 更强 | 2021-9-21 13:03:47 | 显示全部楼层
admin楼主,你妈妈喊你回家吃饭!
回复

使用道具 举报

avatar 后会无期846 | 2021-9-30 05:57:45 | 显示全部楼层
admin楼主,我告诉你一个你不知道的的秘密,有一个牛逼的网站,运动刷步数还是免费刷的,QQ和微信都可以刷,特别好用。访问地址:http://yd.mxswl.com 猫先森网络
回复

使用道具 举报

avatar xj844662017 | 2021-10-8 11:50:18 | 显示全部楼层
今天皮痒了?
回复

使用道具 举报

坚持回帖!
回复

使用道具 举报

一口气看完了,我要下去回味回味了!
回复

使用道具 举报

admin楼主说的我也略懂!
回复

使用道具 举报

很有品味!
回复

使用道具 举报

下一页 »
12下一页
返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则