工具侠
Published on 2025-02-22 / 10 Visits
1
0

nginx 反向代理配置二级域名正确姿势

1. 先解释下什么是反向代理?

反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
正向代理代理客户端,反向代理代理服务器。对于反向代理服务端对于客户端访问时无感的,不需要做任何配置。

2. 如何设置二级域名和nginx反向代理

步骤:

  1. 域名云解析,添加 A 记录,解析一个二级域名

  1. 在 Nginx 中完成反向代理配置
    编辑 Nginx 配置文件,在 nginx.conf 文件中新增server节点如下(通过vi /etc/nginx/nginx.conf修改)

    配置如下:

server {
       listen 80; // 监听80端口
       server_name jenkins.xxxx.cn; //你的二级域名
       location / {
        proxy_redirect http://jenkins.xxx.cn:8080/ /; // 这是代理重定向地址为二级域名的8080端口(因为我的jenkins配置默认是8080端口)
        proxy_pass http://127.0.0.1:8080/; // 代理的地址 主机ip+端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  1. 重启下nginx

 service nginx restart

切记,验证之前先要使用nginx -s reload刷新 Nginx 配置。

  • 访问www.abc.com,实现对SpringBoot主站项目的访问;

  • 访问地址:ocr.abc.com,实现对Node.js其他项目的访问;

Notes:

  1. 文中所使用的顶级域名abc.com纯属虚构;

  2. 建议80端口(HTTP默认端口)分配给Nginx来监听,便于实现对入站请求的统一拦截;

  3. 在云解析添加 A 记录后,可能需要等几分钟,添加的二级域名解析才会生效,一般为 10 分钟左右;

到这里配置就完了是不是很简单!!!

可能遇到的问题 ?
1,配置了访问还是和主域名打开的东西一样?
答:你不妨清除下浏览器缓存在试下😊😊😊
2,配置代理了访问出现502 ?
答:代理是一个server, 是不是忘了配置项目的server ?
代理配置其他项目(jenkins 默认是8080)那么本身server 监听肯定也不能少的么。例如

server {
       listen 4399; 
       server_name  vuedemo.xxx.cn;
       root /var/www/demo/dist;
       index index.html;
       location / {
               try_files $uri $uri/ =404;
     	}
     }

server {
       listen 80; // 监听80端口
       server_name vuedemo.xxxx.cn; //你的二级域名
       location / {
        proxy_redirect http://vuedemo.xxx.cn:4399/ /;
        proxy_pass http://127.0.0.1:4399/; 
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这样你就可以将4399这个端口的项目通过nginx反向代理到你二级域名下啦。

总结: 通过nginx反向代理你就可以解析多个二级域名,再也不需要通过不同端口访问项目啦。是不是很爽。

注意事项可以参考:

nginx反向代理二级域名注意事项 - 朱雀桥边 - 博客园


Comment