NGINX代理不起作用

时间:2018-04-07 04:47:48

标签: docker nginx digital-ocean

我在DigitalOcean Droplet上运行了两个容器。第一个容器是在端口9090上运行的REST api容器。第二个容器是一个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中,名称为<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://<domain>.com/ubgrill/app时,出现404(未找到)错误。 http://<domain>.com/ubgrill/api也是如此。我可以在http://<domain>.com:4500访问应用,在http://<domain>.com:9090/ubgrill/api访问api( API实际上以/ ubgrill / api 开头)。我是nginx代理中的一个完整的菜鸟,在线教程都在一个单独的容器中处理nginx,这不是我的配置。我的配置有什么问题,请您指点一个关于nginx的更全面的教程?感谢。

1 个答案:

答案 0 :(得分:0)

在nginx conf:

  

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