Nginx proxy_pass “Não é possível obter”, enquanto o domínio desejado é exibido normalmente

1

Aqui está o meu problema: estou tentando fazer um proxy_pass em "/" (localizado em test.co) para um domínio separado - webflow.test.co - enquanto todos os outros pedidos "/(.+)" vão para meu servidor nodejs. Infelizmente, com minha configuração atual, recebo um erro "Cannot GET /index.html". Isso é estranho para mim, especialmente porque ir diretamente para o webflow.test.co funciona bem.

Aqui está o meu código - qualquer ajuda é muito, muito apreciada. Foi preso por algum tempo, e eu sou novo no nginx:

upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

# Redirect all non-HTTPS to non-WWW HTTPS
server {
    listen 8080;
    server_name "~^(?:www\.)?(.*)$";
    return 301 https://$host$request_uri;
}

# Redirect WWW HTTP to non-WWW HTTP
server {
    listen 4430;
    server_name "~^www\.(.*)$";
    return 301 https://$1$request_uri;
}

server {
    listen 443 ssl;
    server_name webflow.test.co;

    location / {
        proxy_pass http://webflow.test.co;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# Reverse-proxy to http://nodejs
server {
    listen 4430;
    server_name "~^(?!www\.).*$";

    client_max_body_size 50M;

    location ~ /(.+) {
        proxy_pass http://nodejs;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

EDIT solicitado pelo @Tero ilkanen: Os dois blocos de redirecionamento no topo (não-HTTPS e não-WWW) são herdados, mas suponho que eu queira que eles fiquem. O que eu estou adicionando é a funcionalidade para o seguinte: Eu preciso ser capaz de ir para a página inicial (neste caso, test.co) e tê-lo proxy para webflow.test.co, mantendo o host intacto. Todos os outros pedidos precisam ser enviados para o servidor Nodejs - ou seja, test.co/api, test.co/media, test.co/login e alguns outros. Isso é apenas uma execução de teste - depois que eu resolver esse problema, adicionarei suporte a URLs específicos. Mas por enquanto, homepage > webflow.test.co, tudo o mais para o servidor nodejs. Desde então, adicionei os dois blocos de localização de volta ao bloco de servidores Nodejs único, mas agora estou obtendo um loop de redirecionamento infinito. Vou editar e colocar o código atualizado abaixo.

upstream nodejs {
    server 127.0.0.1:8081;
    keepalive 256;
}

# Redirect all non-HTTPS to non-WWW HTTPS
server {
    listen 8080;
    server_name "~^(?:www\.)?(.*)$";
    return 301 https://$host$request_uri;
}

# Redirect WWW HTTP to non-WWW HTTP
server {
    listen 4430;
    server_name "~^www\.(.*)$";
    return 301 https://$1$request_uri;
}

# Reverse-proxy to http://nodejs
server {
    listen 4430;
    server_name "~^(?!www\.).*$";

    client_max_body_size 50M;

    location / {
        proxy_pass http://webflow.test.co;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        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-Proto $scheme;
    }

    location ~ /(.+) {
        proxy_pass http://nodejs;
        proxy_set_header Connection "";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
    
por Ryan Spicer 04.09.2017 / 23:23

0 respostas

Tags