微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Docker 容器的 Nginx 反向代理配置

如何解决使用 Docker 容器的 Nginx 反向代理配置

这几天我在玩 Nginx 和 Docker。我尝试将 Nginx 配置为其他服务的代理,但我被堆积了。让我解释一下我的问题。首先,我在 Ubuntu Server 20 LTS 上运行了几个 Docker 容器,它们一起配置在一个名为 services 的自定义网络中。

docker network create -d bridge --subnet=172.18.0.0/16 services

然后我为 MysqLPHPMyAdmin、Apache2/PHP7 和 Nginx 运行一个容器。以下是我如何创建容器的命令:

docker run -d --name MysqL --restart=always \
--net services --ip 172.18.0.3 \
-e MysqL_ROOT_PASSWORD=xxxx \
-v /home/MysqL/data:/var/lib/MysqL \
-v /home/MysqL/conf:/etc/MysqL \
MysqL:5.7.32

docker run -d --name PHPmyadmin --restart=always \
-p 8000:80 --net services --ip 172.18.0.2 \
-e PMA_HOST=172.18.0.3 \
-e MysqL_ROOT_PASSWORD=xxxx \
-v /home/sql:/etc/PHPmyadmin/sql \
-v /home/PHPMyAdmin.config.inc.PHP:/etc/PHPmyadmin/config.user.inc.PHP \
PHPmyadmin/PHPmyadmin:4.8

docker run -d --name lamp-7.4 --restart=always \
-p 8002:80 -p 587 -p 25 -p 465 -p 443 -p 3306 --net services --ip 172.18.0.99 \
-v /home/htdocs:/var/www/html \
-v /home/apache:/etc/apache2 \
-v /home/PHP:/usr/local/etc/PHP \
PHP:7.4.15-apache

docker run -d --name Nginx --restart=always \
-p 80:80 -p 587 -p 25 -p 465 -p 443 -p 8002 -p 8000 -p 8090 --net services --ip 172.18.0.100 \
-v /home/Nginx:/etc/Nginx/conf.d \
Nginx:1.19.7

每个容器都可以正常工作,只要我通过服务器 IP(而不是容器 IP)直接连接。假设我是:213.13.9.121。在运行 2 个名为 site 和 site2 的 wordpress 安装的 Apache 服务器上。这意味着我通过 URI 访问这些安装

PHPMyAdmin 可通过 URI 访问:

现在我的域 sample.org 可以通过 Nginx 容器访问。我的 Nginx 配置文件 default.config:

server {
    listen       80;
    listen  [::]:80;
    server_name  sample.org www.sample.org;
 
    charset UTF-8;
    gzip on;
    
    access_log off;
    rewrite_log on;
    error_log /var/log/Nginx/error.log error;

    location /dba/ {
        proxy_buffering off;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        # proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_pass http://213.13.9.121:8000/;    
        proxy_read_timeout 60;
    }
}

我找不到可以通过以下 URI 访问服务的配置:

我已经在我的提供商(IONOS、云服务器)配置中打开了所有定义的端口,并且域缓存设置为 1 分钟。

我尝试的代理配置的每个变体都不能很好地工作。在最好的情况下,我能够看到 http://sample.org/dba/登录页面,但登录后我重定向到 sample.org,而没有路径 /dba/。在我手动添加后,它正在工作。在玩了几天没有任何成功之后,我很绝望,也有点失落。因为如果我进行了正确的重定向,那么我需要启用 SSL。我从我的提供商那里得到的证书我真的希望能在这里找到一些帮助。非常感谢提前。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。