docker 容器 运行 端口 80 的 Nginx 反向代理
Nginx Reverse proxy for a docker container running at port 80
我的 docker 撰写如下:
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
image: nginx:stable-alpine
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
#...
其中 mediawiki 是一个 docker 容器,它在 docker 的端口 80 上运行并且似乎无法更改端口号。
我正在尝试通过 ngninx 公开 mediwiki
,nginx 配置如下所示:
events {
}
http {
server {
listen 80;
location / {
client_max_body_size 2M;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_pass http://mediawiki:80;
}
}
}
由于 nginx 和 mediawiki 都是 运行 端口 80,我无法设置 portmap mediwiki 80:80
.
我已经尝试将它映射到 mediawiki 下的另一个端口,例如 7001:80
并在 nginx 配置中将 http://mediawiki:80
替换为 http://mediawiki:7001
但这会在加载站点时产生错误的网关错误 url 在 80 端口。
我该如何解决这个问题?
将媒体维基的服务端口更改为 8080,例如
8080:80
和
在本地 nginx.conf 中将 nginx 端口更改为 7001 并且
proxy_pass http://mediawiki:8080;
./nginx.conf:/etc/nginx/nginx.conf
因此,nginx 将 运行 端口 7001 和 mediawiki 端口 80。
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
image: nginx:stable-alpine
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:7001
#...
然后访问 http://mediawiki:80 上的应用程序
让我们看看reverse proxy
我用的是哪种情况。
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
build: .
image: A_NEW_NAME:VERSION_TAG
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./wiki.conf:/etc/sites-available/wiki.conf
ports:
- 80:80
这应该是您的 wiki.conf
内容:
server {
listen 80;
server_name THE_DOMAIN_NAME_OF_YOUR_MEDIAWIKI;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://mediawiki:80;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
并在你的 docker-compose
文件所在的目录中添加一个 Dockerfile
:
FROM nginx:stable-alpine
COPY wiki.conf /etc/sites-available/
RUN cd /etc/sites-enabled/ && ln -s /etc/sites-available/wiki.conf
并保留您的 nginx.conf
作为默认值,或自行更改一些值但不添加任何指令来服务 wiki
。
您可以用实际域名替换THE_DOMAIN_NAME_OF_YOUR_MEDIAWIKI
。就像如果您有 media.com
并且您的 wiki
希望可以在 wiki.media.com
.
访问
现在您可以 运行 docker-compose up -d --build
并查看结果。
我的 docker 撰写如下:
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
image: nginx:stable-alpine
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
#...
其中 mediawiki 是一个 docker 容器,它在 docker 的端口 80 上运行并且似乎无法更改端口号。
我正在尝试通过 ngninx 公开 mediwiki
,nginx 配置如下所示:
events {
}
http {
server {
listen 80;
location / {
client_max_body_size 2M;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
proxy_pass http://mediawiki:80;
}
}
}
由于 nginx 和 mediawiki 都是 运行 端口 80,我无法设置 portmap mediwiki 80:80
.
我已经尝试将它映射到 mediawiki 下的另一个端口,例如 7001:80
并在 nginx 配置中将 http://mediawiki:80
替换为 http://mediawiki:7001
但这会在加载站点时产生错误的网关错误 url 在 80 端口。
我该如何解决这个问题?
将媒体维基的服务端口更改为 8080,例如 8080:80
和
在本地 nginx.conf 中将 nginx 端口更改为 7001 并且 proxy_pass http://mediawiki:8080;
./nginx.conf:/etc/nginx/nginx.conf
因此,nginx 将 运行 端口 7001 和 mediawiki 端口 80。
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
image: nginx:stable-alpine
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:7001
#...
然后访问 http://mediawiki:80 上的应用程序
让我们看看reverse proxy
我用的是哪种情况。
version: '3.2'
services:
mediawiki:
image: mediawiki:lts
nginx:
build: .
image: A_NEW_NAME:VERSION_TAG
depends_on:
- mediawiki
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./wiki.conf:/etc/sites-available/wiki.conf
ports:
- 80:80
这应该是您的 wiki.conf
内容:
server {
listen 80;
server_name THE_DOMAIN_NAME_OF_YOUR_MEDIAWIKI;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://mediawiki:80;
proxy_redirect off;
# Socket.IO Support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
并在你的 docker-compose
文件所在的目录中添加一个 Dockerfile
:
FROM nginx:stable-alpine
COPY wiki.conf /etc/sites-available/
RUN cd /etc/sites-enabled/ && ln -s /etc/sites-available/wiki.conf
并保留您的 nginx.conf
作为默认值,或自行更改一些值但不添加任何指令来服务 wiki
。
您可以用实际域名替换THE_DOMAIN_NAME_OF_YOUR_MEDIAWIKI
。就像如果您有 media.com
并且您的 wiki
希望可以在 wiki.media.com
.
现在您可以 运行 docker-compose up -d --build
并查看结果。