【发布时间】:2016-09-22 18:33:41
【问题描述】:
我有两个 wordpress 实例,每个实例都作为一个 docker 容器运行。我想通过单个 nginx 服务器来前端/代理这两个 wordpress 实例。
以下是我的 nginx 配置文件。
upstream docker-site1 {
server site1_site;
}
upstream docker-site2 {
server site2_site;
}
server {
listen 80;
server_name myserver.domain.com;
proxy_set_header Host "myserver.domain.com"; # required for Docker client sake
proxy_set_header X-Real-IP $remote_addr; #pass on real client IP
client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads
# required to avoid HTTP 411: see issue #1486 (https://github.com/dotcloud/docker/issues/1486)
chunked_transfer_encoding on;
location /site2 {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/pass/.site1_htpasswd;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_pass http://docker-site2/;
}
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/pass/.site1_htpasswd;
proxy_set_header Host $http_host;
add_header HTTP_HOST $http_host;
proxy_pass http://docker-site1;
proxy_http_version 1.1;
}
}
【问题讨论】:
-
这个配置有问题吗?错误是什么?
-
这不是 docker 问题。只是 nginx 配置...
-
我在使用 myserver.domain.com/site2 时无法访问 site2
-
当然,这不是 docker 问题。但是 wordpress 容器本身无法理解位于子目录中。 Site2 wordpress 容器不尊重
/site2并且始终以myserver.domain.com/而不是myserver.domain.com/site2/发送URL。因此总是去 site-1 wordpress 网站。