对 docker 容器使用 nginx 反向代理

Posted

技术标签:

【中文标题】对 docker 容器使用 nginx 反向代理【英文标题】:using nginx reverse proxy for docker container 【发布时间】:2020-09-10 09:10:08 【问题描述】:

我在我的 ubuntu 机器上使用 nginx,并使用 docker 和一个没有 docker 的 wordpress 网站设置了 2 个 laravel 应用程序

应用1:本地主机:8088 应用 2:本地主机:8089

我想要实现的是,当有人打开 localhost 时它会打开 wordpress 网站,如果有人打开 localhost/app1 它会打开应用程序 1,依此类推。

所以我创建了反向代理,以便它可以打开我的 docker 容器应用程序 这就是我所做的

    sudo nano /etc/nginx/sites-available/website ln -s /etc/nginx/sites-available/website /etc/nginx/sites-enabled/ nginx -t systemctl 重启 nginx

这样做之后,当我尝试打开 localhost/app1 时它显示 404 但它识别出它是一个 laravel 应用程序但显示 404

这是我的 /etc/nginx/sites-available/website 文件代码

server

    listen 80;
    server_name localhost;
    root /var/www/html/wordpress;

    location /app1/
        proxy_pass http://localhost:8088;
    


【问题讨论】:

【参考方案1】:

您可以在应用程序的 nginx 文件夹中创建一个名为 redirects.map 的文件并添加如下映射

~^localhost/app1/(.*) localhost:8089/$1;

【讨论】:

也请尝试这种方法 - 打开 /etc/hosts 文件并添加一个条目,如 ------------ 127.0.1.1:8089 localhost/app1【参考方案2】:

你应该从

更改 nginx 配置
server

   listen 80;
   server_name localhost;
   root /var/www/html/wordpress;

   location /app1/
       proxy_pass http://localhost:8088;
   


server

    listen 80;
    server_name localhost;
    root /var/www/html/wordpress;

    location /app1 
        proxy_pass http://localhost:8088;
    


【讨论】:

以上是关于对 docker 容器使用 nginx 反向代理的主要内容,如果未能解决你的问题,请参考以下文章

Docker使用nginx-proxy对Nextcloud进行https反向代理

nginx 反向代理可以访问多个 docker 容器

为Docker创建自动化nginx反向代理

Nginx反向代理docker容器局域网

docker使用nginx实现ssl(https)反向代理其他容器应用

使用 nginx 反向代理的 Docker 容器内的闪亮服务器不会遵循 301 重定向