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

mac 版本下载 nginx 可以参考:

若服务器只对外暴露 80 端口,进入的请求需要使用 nginx 来进行反向负载均衡。

nginx请求如何映射url - 图1

因为 nginx 只对外暴露 80 端口。根据 nginx 路由到代理路径上有两种方式

方式 1:配置域名

nginx 的虚拟主机的配置:

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

客户端需要配置 hosts 文件:

  1. 127.0.0.1 test.one.cn

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

方式 2:配置 location

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

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

推荐方式 1。

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

3.1 proxy_pass 后有路径

配置 1

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

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

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

配置 2

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

请求路径: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. server {
  2. listen 80;
  3. server_name test.one.cn;
  4. access_log /Users/yexuerui/Documents/nginxlog/local.log main;
  5. error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http;
  6. location /p1 {
  7. proxy_pass http://127.0.0.1:8083/p2/;
  8. }
  9. }

请求路径: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. server {
  2. listen 80;
  3. server_name test.one.cn;
  4. access_log /Users/yexuerui/Documents/nginxlog/local.log main;
  5. error_log /Users/yexuerui/Documents/nginxlog/local-error.log debug_http;
  6. location /p1/ {
  7. proxy_pass http://127.0.0.1:8083/p2/;
  8. }
  9. }

请求路径: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_passip:port/xx格式: 是将proxy_pass的路径去替换请求的域名:端口 / location配置。

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

3.2 proxy_pass 只是 ip: 端口

proxy_pass 的 url 后不存在 /

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

或者这种配置

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

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

proxy_pass 的 url 后存在 /

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

或者

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

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

proxy_passip: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’。
    https://blog.csdn.net/qq_29595463/article/details/108098747