1. 先解释下什么是反向代理?
反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
正向代理代理客户端,反向代理代理服务器。对于反向代理服务端对于客户端访问时无感的,不需要做任何配置。
2. 如何设置二级域名和nginx反向代理
步骤:
域名云解析,添加 A 记录,解析一个二级域名
在 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;
}
}
重启下nginx
service nginx restart
切记,验证之前先要使用nginx -s reload
刷新 Nginx 配置。
访问
www.abc.com
,实现对SpringBoot
主站项目的访问;访问地址:
ocr.abc.com
,实现对Node.js
其他项目的访问;
Notes:
文中所使用的顶级域名
abc.com
纯属虚构;建议80端口(HTTP默认端口)分配给Nginx来监听,便于实现对入站请求的统一拦截;
在云解析添加 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反向代理你就可以解析多个二级域名,再也不需要通过不同端口访问项目啦。是不是很爽。
注意事项可以参考: