- 判断 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
;
若服务器只对外暴露 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。
@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
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
请求服务器。
配置 3
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
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
返回结果:404 异常
当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