随着服务器性能的提升和业务的需求,一台服务器上往往会同时有多个服务,这些服务都希望监听80端口,比如有a.com和b.com。这时候我们可以使用nginx的代理转发功能帮我们实现共用80端口的需求。
先在两个空闲的端口上分别部署项目(非80,假设是8080和8081)nginx配置如下:
# a项目配置nginx
server {
listen 8080;
root /usr/share/nginx/html; #这里是默认路径,生产中代码存放路径:root /web/vue-base-demo/dist/;
index index.html;
location / {}
}
# b项目配置nginx
server {
listen 8081;
root /usr/share/nginx/html; #这里是默认路径,生产中代码存放路径:root /web/react-base-demo/build;
index index.html;
location / {}
}
紧接着如果已经做好域名解析,希望a.com打开a项目,b.com打开b项目。我们需要再做两个代理,如下:
# nginx 80端口配置 (监听a二级域名)
server {
listen 80;
server_name a.com;
location / {
proxy_pass http://localhost:8080; # 转发
}
}
# nginx 80端口配置 (监听b二级域名)
server {
listen 80;
server_name b.com;
location / {
proxy_pass http://localhost:8081; # 转发
}
nginx如果检测到a.com的请求,将原样转发请求到本机的8080端口,如果检测到的是b.com请求,也会将请求转发到8081端口。
测试:浏览器输入http://a.com或http://b.com即可。
如果还有其它的想让谁做为默认的为80端口,后listen 80 后加上default_server; 就好
server {
listen 80 default_server;
server_name b.com;
location / {
proxy_pass http://localhost:8081; # 转发
}