使用nginx在一个域上运行3个网站

w3nuxt5m  于 2023-02-18  发布在  Nginx
关注(0)|答案(1)|浏览(190)

假设我有一个域名www.example.com,它将我的服务器IP重定向为www.example.com abc.com which redirects my server ip 1.2.3.4
我有3网站在我的服务器上运行使用Docker容器,

1st website ip 1.2.3.4:50/a
2nd website ip 1.2.3.4:60/b
3rd website ip 1.2.3.4:70/c

我可以访问这所有网站使用ip
我想用我的域名来运行这三个网站。

abc.com/a should run 1st website 
abc.com/b should run 2nd website 
abc.com/c should run 3rd website

我正在RHEL上使用nginx服务器版本1.14.1
请帮帮忙
我试过这些配置文件

location /a {
                rewrite ^/a(.*)$ http://1.2.3.4:50/a redirect;
        }

 location /b {
                rewrite ^/b(.*)$ http://1.2.3.4:60/b redirect;
        }

但它正在重定向并显示URL中的端口

zzlelutf

zzlelutf1#

尝试此操作以解决您的问题

location /a {
        proxy_pass http://1.2.3.4:50;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

location /b {
        proxy_pass http://1.2.3.4:60;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

location /c {
        proxy_pass http://1.2.3.4:70;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

请注意,此代理配置将使abc.com/a访问http://1.2.3.4:50网站的根目录。但/a也将传递给http://1.2.3.4:50,因此您不必为每个代理添加http://1.2.3.4:50/a
您可以在nginx.conf中显式配置它

// Nginx.conf
http {
 ...
 server {
    server_name abc.com;
    // here is location ...
   }
 }

或者通过在可用站点中包含配置,通常在nginx.conf中,您可以找到以下部分:

// Nginx.conf
http {
 ...
 include /etc/nginx/sites-available/*;
 ...
}

然后您可以添加site.confmain.conf,您可以自己命名它,例如在sites-available文件夹中,该文件夹具有以下配置:

server {
    server_name abc.com;
    // here is location ...
}

相关问题