Nginx域名转发使用场景代码实例

2025-05-26 0 37

场景1:因服务器限制,所以只对外开放了一个端口,但是需要请求不同的外网环境,所以在中转服务器上用nginx做了一次转发

实现:

?

1

2

3

4

5

6

7

8

9

10
server {

listen 8051;

server_name localhost;

location /license/ {

proxy_pass http://xxx.xxx.xxx.xxx:8058/;

}

location / {

proxy_pass http://xxx.xxx.xxx.xxx:8051/; } }

特别注意:

  敲黑板:此处如果涉及到文件上传的转发,相应在server_name下添加client_max_body_size 100m;

  域名转发的地址,proxy_pass后面必须跟"/",否则会造成转发不正常

  在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;
  如果没有/,表示相对路径,把匹配的路径部分也给代理走。

  假设下面四种情况分别用 http://192.168.1.1/proxy/aerchi.html 进行访问。

  第一种:

    location /proxy/ {
     proxy_pass http://127.0.0.1/;
    } 

    代理到URL:http://127.0.0.1/aerchi.html

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

    location /proxy/ {
     proxy_pass http://127.0.0.1;
    }

    代理到URL:http://127.0.0.1/proxy/aerchi.html

  第三种:

    location /proxy/ {
    proxy_pass http://127.0.0.1/aaa/;
    }

    代理到URL:http://127.0.0.1/aaa/aerchi.html

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

    location /proxy/ {
      proxy_pass http://127.0.0.1/aaa;
    }

    代理到URL:http://127.0.0.1/aaaaerchi.html

场景2:因业务需要,一套前段代码需要映射到两个后台地址上,所以需要在接口上进行区分转发,同时转发时需要把区分标志去掉

实现:

?

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

29

30

31

32

33

34

35

36

37

38

39
server {

listen 0.0.0.0:8204;

server_name localhost;

# 静态页面目录

root E:\\xxxxxxx;

# 默认首页

index /index.html;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#proxy_cookie_path /* /*;

client_max_body_size 100m;

location ~*/wx/(.*) {#根绝接口是否包含/wx/来区分

# 动态页面,交给tomcat处理

if ( !-e $request_filename) {

        proxy_pass http://127.0.0.1:8091/$1;#转到后台时需要把/wx去掉

}

}

  location / {

    # 用户浏览器端的缓存设置

    location ~* \\.(css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ {

      expires -1;

      if (-f $request_filename) {

        break;

      }

    }

    # 动态页面,交给tomcat处理

    if ( !-e $request_filename) {

      proxy_pass http://127.0.0.1:8092;

    #proxy_cookie_path /* /*;

    }

  }

  error_page 500 502 503 504 /50x.html;

  location = /50x.html {

    root html;

  }

}

特别注意:

  1、 proxy_set_header Host $http_host;

  不改变请求头 。

  2、proxy_set_header Host host;如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,使用 host;如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。 这种情况下,使用host;如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,使用host变量它 的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名;

  3、proxy_set_header Host host: host:host:proxy_port;

  服务器名可以和后端服务器的端口一起传送:

  4、如果某个请求头的值为空,那么这个请求头将不会传送给后端服务器:

  proxy_set_header Accept-Encoding “”;

  5、用户真实的ip地址转发给后端服务器

  proxy_set_header Host $host;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Real-IP $remote_addr;

场景3:前段代码用vue实现,vue没有具体的页面,也是通过/xx/xx来访问资源,这时候需要与后台接口进行区分

实现:

  可以通过特殊字符类似“#”来区分,携带#的请求默认是静态资源

?

1

2

3

4

5

6
location ~* \\.(#|css|js|jpg|jpeg|gif|png|swf|htm|html|json|xml|svg|woff|ttf|eot|map|ico)$ {

  expires -1;

  if (-f $request_filename) {

    break;

  }

}

场景4:因服务器限制,数据库访问需要nginx进行转发

实现:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
stream {

upstream cloudsocket {

hash $remote_addr consistent;

server 数据库实际ip:3306 weight=5 max_fails=3 fail_timeout=30s;

}

server {

listen 127.0.0.1:8058; #本机代理端口

proxy_connect_timeout 10s;

proxy_timeout 300s;#设置客户端和代理服务之间的超时时间,如果5分钟内没操作将自动断开。

proxy_pass cloudsocket;

}

}

特别注意:

stream与http同级,所以不要放到http里

场景5:访问某域名时需要重定向到另一个地址

实现:

?

1

2

3

4

5

6

7

8

9
server {

  listen 7000;

  server_name localhost;

  client_max_body_size 100m;

  location = / {

    rewrite ^(.*) https://www.baidu.com permanent;

  }

}

特别注意:

last        本条规则匹配完成后继续向下匹配新的location URI规则
break        本条规则匹配完成后终止,不在匹配任何规则
redirect       返回302临时重定向
permanent     返回301永久重定向

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:https://www.cnblogs.com/xiufengd/p/13162044.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Nginx域名转发使用场景代码实例 https://www.kuaiidc.com/52931.html

相关文章

发表评论
暂无评论