【问题标题】:NGINX Proxy does not workNGINX 代理不工作
【发布时间】:2018-04-07 04:47:48
【问题描述】:

我的 DigitalOcean 液滴上运行了两个容器。第一个容器是 REST api 容器,运行在 9090 端口。第二个容器是 ReactJS 多级容器,Nginx 运行在 4500 端口。docker-compose 文件是这样的:

version: '3'

services:
    ubgrillmysql:
        image: mysql:5.6
        container_name: ubgrillmysql
        environment:
            - MYSQL_ROOT_PASSWORD=finder
            - MYSQL_DATABASE=ubgrillData
            - MYSQL_USER=ubgadmin
            - MYSQL_PASSWORD=win(der90)Admin
        volumes:
            - /home/justicar/workspace/applications/data
        networks:
            - ubgrill_network
    web:
        image: ubgrill/web 
        container_name: web
        depends_on:
            - ubgrillmysql
        environment:
            - DATABASE_HOST=ubgrillmysql
            - DATABASE_USER=ubgadmin
            - DATABASE_PASSWORD=win(der90)Admin
            - DATABASE_NAME=ubgrillData
            - DATABASE_PORT=3306
        ports:
            - 9090:9090
        networks:
            - ubgrill_network
    frontend:
        image: ubgrill/frontend
        container_name: frontend
        build: ./src/main/ubgrill
        depends_on:
            - web
        ports:
            - 4500:80
        networks:
            - ubgrill_network

networks:
    ubgrill_network:
        external:

我已经在我的 droplet 上安装了 nginx,因为我打算将来将我的博客转移到那里。我使用 mu droplet 的域名创建了一个服务器块,并存储在 /etc/nginx/sites-available 中,名称为<domain>.com。文件如下:

upstream ubgrillapi{
    server localhost:9090;
}

upstream ubgrillapp{
    server localhost:4500;
}

server {
    listen 80;
    listen [::]:80;

    root /var/www/<domain>.com/html;
    index index.html index.htm;

    server_name <domain>.com www.<domain>.com;

    location / {
        try_files $uri $uri/ =404;
    }

    location /ubgrill/api/ {
        proxy_pass http://ubgrillapi;
        proxy_redirect off;
        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_set_header X-Forwarded-Host $server_name;
    }

    location /ubgrill/app/ {
        proxy_pass http://ubgrillapp;
        proxy_redirect off;
        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_set_header X-Forwarded-Host $server_name;
     }
}

当我尝试访问 http://&lt;domain&gt;.com/ubgrill/app 时,我收到 404(未找到)错误。 http://&lt;domain&gt;.com/ubgrill/api 也是如此。我可以通过http://&lt;domain&gt;.com:4500 访问应用程序和http://&lt;domain&gt;.com:9090/ubgrill/api 的API(API 实际上以/ubgrill/api 开头)。我是一个完整的 nginx 代理菜鸟,在线教程都在一个单独的容器中处理 nginx,这不是我的配置。我的配置有什么问题,你能指点我更全面的 nginx 教程吗?谢谢。

【问题讨论】:

    标签: docker nginx digital-ocean


    【解决方案1】:

    在 nginx 配置中:

    proxy_pass http://ubgrillapp;

    http://nginx.org/en/docs/http/ngx_http_proxy_module.html

    Nginx proxy_pass 显示位置

    location / {
    proxy_pass       http://localhost:8000;
    proxy_set_header Host      $host;
    proxy_set_header X-Real-IP $remote_addr;
    }
    

    (http://example.com:9090/ubgrill/api)

    在您的情况下,我想您应该将其设置为:

    proxy_pass localhost:9090/ubgrill/api 
    

    【讨论】:

    • 那行不通。仍然给我一个 404 Not Found 错误。
    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2019-07-27
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    相关资源
    最近更新 更多