Você deve usar:
location / {
...
}
Ou seja, sem o =
. A sintaxe location =
corresponde apenas a um único URI.
Veja este documento para detalhes.
Eu tenho o aplicativo ASP.NET hospedado no IIS de back-end (Windows Server 2012 R2) e o Debian com o Nginx aberto para público com certificados SSL e assim por diante.
Nginx proxying solicitação http://myexample.com
para backend HTTP sem nenhum problema com config:
server {
listen 80;
server_name my.example.com
location / {
proxy_pass http://backend:1234;
}
}
Mas quando eu tento https://my.example.com
- o navegador da web recebe o link https://my.example.com/Login.aspx
(que está correto) e, em seguida, 404 Not Found.
Configuração de HTTPS Nginx (eu tentei com linhas comentadas também, mas ainda 404):
server {
listen 443 ssl http2;
server_name my.example.com
-- SSL part ---
location = / {
proxy_pass http://backend:1234;
#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;
#proxy_redirect http:// $scheme://;
}
}
Log Nginx mostra isso:
[error] 27936#27936: 1* open() "/etc/nginx/html/Login.aspx" (2: No such file or directory), client: IP, server: my.example.com, request: "GET /Login.aspx HTTP/2.0", host: "my.example.com"
Por que o proxy Nginx não está enviando solicitações GET para o servidor back-end?
Você deve usar:
location / {
...
}
Ou seja, sem o =
. A sintaxe location =
corresponde apenas a um único URI.
Veja este documento para detalhes.
Tags nginx reverse-proxy iis