nginx配置多个域名使用同一个端口

随着服务器性能的提升和业务的需求,一台服务器上往往会同时有多个服务,这些服务都希望监听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; # 转发
    }