小弟新人一个,想问问,多个域名如果解析到同一台主机的不同端口?

我是在阿里云的个人服务器,手里有两个域名 aaa.com和bbb.com。


centOS 7 + nginx




然后aaa.com我是写在nginx.conf的配置文件里,监听的是80端口,指向项目a




bbb.com是写在bbb.conf的配置文件里,监听82端口,指向项目b




但是为什么这两个域名打开的都是项目a的内容,bbb.com这个域名要加上82的端口号才能正确访问到项目b。




现在我的疑问就是,bbb.com这个域名的配置文件该如何做才可以不加上端口号就能正确访问到项目b的内容
自己在百度上查的,说是bbb.com的配置文件加上

location / {
    proxy_pass http://ip+端口号
}

可是并不可以啊,具体应该要怎么做才可以,来这边求教各位大佬,这里贴上我两个项目的配置文件

图片说明
图片说明

图片说明
文不重要,看图↑↑↑↑

域名没有你说的解析端口的功能,它只能解析ip
你需要在一个服务器上放多个网站,使用多个域名访问,这个可以通过配置主机头区分
如果你的多个网站还是多个服务器或者多个端口的,但是统一希望用域名不带端口(也就是默认80端口)访问,这个可以用ngnix反向代理

如果你是小白的话,建议你安装一个免费版的宝塔面板,可视化操作界面,多个域名都可以映射到你的服务器IP,然后你在宝塔面板里添加不同域名的网站内容,就可以了,非常方便,如果采纳,请给积分。

NGINX的配置

server {
    listen 80;
    server_name www.aaa.com;

    # 其他配置继续添加

    location ~ /(\w+) {
        # 其他配置继续添加
        proxy_http_version 1.1;

        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8000;
        expires -1;
    }
}

server {
    listen 80;
    server_name www.bbb.com;

    # 其他配置继续添加即可

    location ~ /(\w+) {
        # 其他配置继续添加
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8500;
        expires -1;
    }
}

两个域名www.aaa.com和www.bbb.com,都指向你的服务器

server_name就会解析到你的域名,符合了后面会走反向代理部分,就是proxy_pass,这里面指定你的本地服务的端口即可

总结下来,就是2个关键,一个是server_name,通过监听端口,以及请求来的域名确定走哪个server。另一个是proxy_pass,代理到本地的哪个端口

简单点
1. 把你现在两个配置listen都改成80
2. server_name换成你的域名,就是解析的域名
3. 在proxy_pass中指向你提供服务的ip:port

希望对你有所帮助。