NGINX 配置端口转发

多个 Springboot 项目运行在不同端口,通过不同路径转发到不同端口

http://127.0.0.1:8081/index 访问 webA

http://127.0.0.1:8082/index 访问 webB

http://127.0.0.1:8083/index 访问 webC

修改后:

http://127.0.0.1/a/index 访问 webA

http://127.0.0.1/b/index 访问 webB

http://127.0.0.1/c/index 访问 webC

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
http {
...
upstream weba {
server 127.0.0.1:8081;
}

upstream webb {
server 127.0.0.1:8082;
}

upstream webc {
server 127.0.0.1:8083;
}
...

server {
...
location /a/ {
proxy_pass http://weba/;
# proxy_pass http://127.0.0.1:8081/; # 也可以直接写ip+端口
}

location /b/ {
proxy_pass http://webb/;
}

location /c/ {
proxy_pass http://webc/;
}
...
}
}

访问某个路径直接跳转到新页面

输入 http://127.0.0.1/blog 就会跳转到百度首页

1
2
3
location ^~ /blog {
rewrite ^ https://www.baidu.com;
}

location 与 proxy_pass 斜杠问题

nginx proxy_pass末尾神奇的斜线

1
2
3
4
5
6
server.port=10240

@RequestMapping("/a")
public String helloA(@RequestParam String name){
return "Hello "+ name +" ! now time is "+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(System.currentTimeMillis());
}

服务运行在 10240 端口,使用 http://127.0.0.1:10240/a?name=123 即可输出结果

遇到的问题

  • unknown log format “main” in C:\nginx-1.17.3/conf/nginx.conf:28
    打开nginx.conf,”main”错误是因为丢失了log_format选项,之前把他屏蔽掉了,修改之后问题解决。

参考

nginx 同一个域名下部署多个工程