本文共 4879 字,大约阅读时间需要 16 分钟。
文章目录
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的虚拟主机的配置:
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文件:
127.0.0.1 test.one.cn
用户发起http://test.one.cn/userT
请求,就会被转发到http://127.0.0.1:8083/userT
进行处理。
方式2:配置location
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配置
@RestControllerpublic 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
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
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
请求服务器。
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
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后不存在/
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; }}
或者这种配置
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后存在/
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/; }}
或者
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
当proxy_pass
是ip:port
格式,
- 后面存在/时,可以看做是绝对路径,将完全替换
http://test.one.cn/p1
得到proxy_pass
即’http://127.0.0.1:8083/’。 - 后面不存在/时,可以看做相对路径,将替换
http://test.one.cn
得到proxy_pass
即’http://127.0.0.1:8083/p1’。
转载地址:https://blog.csdn.net/qq_29595463/article/details/108098747 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!