如何使用多个代理配置 Nginx

时间:2021-04-28 20:24:39

标签: nginx nginx-reverse-proxy

我将端口 3000 用于 Node,8899 用于 WebSockets,3000/graphql

根据我对另一个应用程序的配置,我有以下内容:

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

    root /var/www/domain-name.com/public_html/some_folder/dist/;

    index index.html;

    server_name domain-name.com www.domain-name.com;

    access_log /var/log/nginx/domain-name.com.access.log;
    error_log /var/log/nginx/domain-name.com.error.log;

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

server {
    listen 80;
    listen [::]:80;
    server_name domain-name.com www.domain-name.com;
    location / {
        proxy_pass http://localhost:8899;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name domain-name.com www.domain-name.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name domain-name.com www.domain-name.com;
    location / {
        proxy_pass http://localhost:3000/graphql;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

我已经尝试将 location 块剥离到基本的 proxy_pass,但在第一个 server 块之后没有任何效果。

我已尝试在相应块中交换端口,例如将 listen 80 替换为 listen 3000,但出现错误:“端口已在使用中。”

欢迎推荐!

1 个答案:

答案 0 :(得分:0)

我必须为 Route 53 中的托管区域添加相应的“A”记录,然后对配置和部署目标的环境变量进行适当的更改:

server {
    listen 80;
    listen [::]:80;
    server_name sockets.domain-name.com;
    location / {
        proxy_pass http://localhost:8899;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name api.domain-name.com;
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    listen [::]:80;
    server_name graphql.domain-name.com;
    location / {
        proxy_pass http://localhost:3000/graphql;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}