【发布时间】:2019-12-09 11:41:35
【问题描述】:
我有一个使用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 并在site.conf中添加一个端口为8081的服务器部分,并添加
root /home/example1/www;
root /home/example2/www;
在 site.conf 的每个服务器部分。然而这两个网站都不起作用,我在互联网上搜索,大多数帖子都建议设置一个 nginx-proxy,并将每个 webapp 托管在其他 docker 容器上。
一个 nginx docker 容器是否可以为两个站点提供服务? 以及如何?
【问题讨论】:
-
Ngnix 内置了反向代理支持,所以答案是肯定的。但 Docker 的一大优势是它的微服务方法。
-
谢谢,受限于服务器数量,解决方案越简单越好。你能告诉为什么上面的配置不起作用吗?
-
您是否尝试使用一个域创建两个网站,但使用前缀,例如
/api -
两个站点:example1.com 和 example2.com,都访问同一主机中的 web api 应用程序(另一个 spring boot docker),我怀疑删除 ./../www: /usr/share/ nginx/html 导致了这个问题。
-
找到了解决办法,在容器中创建两个文件夹,并将容器保存到一个新镜像中,在 nginx.yml 中创建两个卷。明天将发布答案。