如何使用一个nginx docker容器为两个站点提供服务?

问题描述 投票:0回答:1

我有一个使用npm webpack构建的webapp,生成一个文件夹,将文件夹推送到centos文件夹,然后启动nginx docker为其提供服务,它工作正常,一些文件如下:nginx.yml:

version: '2'
services:
    nginx:
        image: nginx:1.14.0
        volumes:
            - ./../www:/usr/share/nginx/html
            # ./../www is /home/example1/www
            - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
            - ./ssl:/etc/nginx/ssl
        ports:
            - "443:443"
            - "80:80"

和site.conf:

server {
    listen 80 default;
    server_name example1.com www.example1.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443;
    index index.html;
    server_name localhost;
    error_log /var/log/nginx/error.log;

    ssl related ...

    location / {
        root /usr/share/nginx/html;
    }
    location /api {
        proxy_pass http://www.example1.com:8080/api;
    }
}

现在我想服务另一个站点(例如example2.com),所以我用npm webpack生成了另一个文件夹,将其推送到/ home / example2 / www,因为这次nginx将服务两个站点,我删除了

- ./../www:/usr/share/nginx/html

来自nginx.yml并将一个带有端口8081的服务器部分添加到site.conf中,并添加

root /home/example1/www;
root /home/example2/www;

在site.conf的每个服务器部分中。但是,这两个站点均无法正常工作,我在互联网上进行了搜索,大多数帖子建议设置一个nginx-proxy,并将每个webapp托管在其他docker容器上。

一个nginx泊坞窗容器可以服务两个站点吗?以及如何?

docker nginx
1个回答
0
投票

Nginx映像包括/etc/nginx/conf.d中的所有* .conf文件。尝试运行此命令以验证:docker run --rm -it nginx cat /etc/nginx/nginx.conf

因此,这意味着您应该可以在其中放入尽可能多的conf文件,nginx将为您提供。

因此,您可以像这样使站点文件和conf文件大量存储:

services:
    nginx:
        image: nginx:1.14.0
        volumes:
            - ./../www:/usr/share/nginx/html
            - ./../example1:/home/example1/www
            - ./nginx/site.conf:/etc/nginx/conf.d/default.conf
            - ./nginx/site2.conf:/etc/nginx/conf.d/site2.conf

在site2.conf中:

server_name example2.com www.example2.com;

location / {
    root /home/example1/www;
}
© www.soinside.com 2019 - 2024. All rights reserved.