目前我想设置一台服务器,它有一个Docker WordPress和Nginx作为前面的代理。我希望将来可以有多个WordPress,NodeJS,ROR等,坐在这个Nginx代理后面。
当我尝试在端口80上连接到我的服务器时,我得到403禁用。
我可以构建一个Docker WordPress图像,并可以通过远程PC上的端口8080连接到它。
这是我的Docker WordPress的compose.yml:
version: "3.1"
services:
my_wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_HOST: my_mysql_wordpress
my_mysql_wordpress:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
当我尝试构建一个Nginx容器时,这是我禁止403的部分。
Nginx DockerFile:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf
Nginx compose.yml:
version: "2"
services:
web:
restart: always
image: nginx
ports:
- "80:80"
volumes:
- /path/in/vm/www:/usr/share/nginx/html
external_links:
- mywordpress_wordpress_1:mywordpress
networks:
default:
external:
name: mywordpress_default
Nginx nginx.conf:
http {
#...
upstream wordpress {
server mywordpress:8080;
}
#...
server {
listen 80;
server_name 192.168.1.124 test.me;
location / {
proxy_pass http://wordpress/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
}
}
现在对我而言,这似乎很可能与我的nginx.conf有关,因为我仍然能够连接到我的Word80在端口8080上的网站。我说我也能连接到我的Nginx代理,我发现它时没有看到任何错误。
我尝试做什么甚至可能,或者我是否需要将Nginx应用程序放在操作系统上,而不是在docker容器内?
答案 0 :(得分:2)
您将Nginx和Wordpress放在2个不同的撰写文件中。如果你在同一台机器上运行,那么
external_links:
- mywordpress_wordpress_1:mywordpress
如果您在不同的机器上,则上述功能无效。通过选中docker ps
。
还要检查nginx容器的日志,看看它是否显示在任何错误中。因为错误日志会给出一个指针,指出为什么会抛出403,并且可能是因为你配置它的方式,proxy_pass无法连接到你的wordpress服务器。
如果您在不同的计算机上运行这些撰写文件,请使用external_links
而不是extra_hosts
extra_hosts:
- "mywordpress:<IP of the wordpress machine>"
答案 1 :(得分:1)
如果我是对的,你想运行多个wordpress docker镜像并使用nginx反向代理到wordpress实例。在该用例中,nginx应该位于您的操作系统上,而不是在docker镜像中。这样,nginx就能够代理操作系统上与wordpress容器绑定的端口。