我是靠谱客的博主 明亮奇迹,这篇文章主要介绍nginx请求如何映射url1. nginx的常用命令:2. nginx实现路由的配置3. proxy_pass配置3.1 proxy_pass后有路径3.2 proxy_pass只是ip:端口,现在分享给大家,希望可以做个参考。

1. nginx的常用命令:

判断nginx的安装位置:whereis nginx;
判断是否启动nginx:ps -ef|grep nginx;
判断nginx是否是80端口:lsof -i 80;
到达nginx的bin目录:cd /usr/local/nginx/sbin:
4.1 启动nginx:nginx;
4.2 关闭nginx:nginx -s quit;
4.3 重启nginx:nginx -s reload;

2. nginx实现路由的配置

若服务器只对外暴露80端口,进入的请求需要使用nginx来进行反向负载均衡。
在这里插入图片描述
因为nginx只对外暴露80端口。根据nginx路由到代理路径上有两种方式

方式1:配置域名

nginx的虚拟主机的配置:

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location / { proxy_pass http://127.0.0.1:8083; } }

客户端需要配置hosts文件:

复制代码
1
2
127.0.0.1 test.one.cn

用户发起http://test.one.cn/userT请求,就会被转发到http://127.0.0.1:8083/userT进行处理。

方式2:配置location

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name 127.0.0.1; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /user { proxy_pass http://127.0.0.1:8083; } }

虚拟主机配置多个location,根据url的不同,路由到不同的代理路径上。

推荐方式1。

3. proxy_pass配置

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@RestController public class NginxController { @RequestMapping("p1") public String p1() { return "p1的服务"; } @RequestMapping("p2/xx") public String p2() { return "p2的服务"; } @RequestMapping("p2xx") public String p3() { return "p2xx的服务"; } }

3.1 proxy_pass后有路径

配置1

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1/ { proxy_pass http://127.0.0.1:8083/p2; } }

请求路径:http://test.one.cn/p1/xx
返回结果:p2xx的服务

结论:nginx在代理请求时,http://127.0.0.1:8083/p2与http://test.one.cn/p1/替换。得到http://127.0.0.1:8083/p2xx请求服务器。

配置2

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1 { proxy_pass http://127.0.0.1:8083/p2; } }

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:nginx在代理请求时,http://127.0.0.1:8083/p2替换http://test.one.cn/p1。得到http://127.0.0.1:8083/p2/xx请求服务器。
配置3

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1 { proxy_pass http://127.0.0.1:8083/p2/; } }

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:使用http://127.0.0.1:8083/p2/替换http://test.one.cn/p1得到http://127.0.0.1:8083/p2/xx
配置4

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1/ { proxy_pass http://127.0.0.1:8083/p2/; } }

请求路径:http://test.one.cn/p1/xx
返回结果:p2的服务

结论:使用http://127.0.0.1:8083/p2/替换http://test.one.cn/p1/得到http://127.0.0.1:8083/p2/xx

当proxy_pass是ip:port/xx格式: 是将proxy_pass的路径去替换请求的域名:端口/location配置。

若location的配置为/,但是proxy_pass配置了ip:port/xx。那么也使用ip:port/xx替换域名:端口/。

3.2 proxy_pass只是ip:端口

proxy_pass的url后不存在/

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1 { proxy_pass http://127.0.0.1:8083; } }

或者这种配置

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1/ { proxy_pass http://127.0.0.1:8083; } }

请求路径:http://test.one.cn/p1
返回结果:p1的服务

proxy_pass的url后存在/

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1 { proxy_pass http://127.0.0.1:8083/; } }

或者

复制代码
1
2
3
4
5
6
7
8
9
10
server { listen 80; server_name test.one.cn; access_log /Users/yexuerui/Documents/nginxlog/local.log main; error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http; location /p1 { proxy_pass http://127.0.0.1:8083/; } }

请求路径:http://test.one.cn/p1
返回结果:404异常

当proxy_pass是ip:port格式,

  1. 后面存在/时,可以看做是绝对路径,将完全替换http://test.one.cn/p1得到proxy_pass即’http://127.0.0.1:8083/’。
  2. 后面不存在/时,可以看做相对路径,将替换http://test.one.cn得到proxy_pass即’http://127.0.0.1:8083/p1’。

参考链接 :
nginx请求如何映射url : https://www.jianshu.com/p/afe1cdbdf842

最后

以上就是明亮奇迹最近收集整理的关于nginx请求如何映射url1. nginx的常用命令:2. nginx实现路由的配置3. proxy_pass配置3.1 proxy_pass后有路径3.2 proxy_pass只是ip:端口的全部内容,更多相关nginx请求如何映射url1.内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(75)

评论列表共有 0 条评论

立即
投稿
返回
顶部