Puncte:0

Redirecționează către activul extern nginx

drapel pk

Scopul meu este să am un nginx care să poată trece proxy la alt server.

Intrarea dorită

https://example.com/https://assets1.com/image.jpg?utm=whatever

Ieșire dorită
https://assets1.com/image.jpg?utm=whatever

Aici blocul meu de locație

Server {

    index index.html index.htm index.nginx-debian.html;
    nume_server example.com www.example.com;

    locație ~/(.*) {
            dacă ($request_method = 'GET') {
                    add_header 'Acces-Control-Allow-Origin' '*';
            add_header 'Acces-Control-Allow-Credentials' 'true';
            add_header 'Acces-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header „Acces-Control-Allow-Headers” „DNT,X-CustomHeader,Keep-Alive,User->
    }
    proxy_pass https://$1$is_args$args/;
    proxy_set_header X-Real-IP $adresă_la distanță;
    proxy_set_header Gazdă „www.example.com”;
}
asculta 80;
asculta [::]:442 ssl ipv6only=on;
asculta 443 ssl; # gestionat de Certbot
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # gestionat de Certbot
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # gestionat de Certbot
includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot

}

Și eroarea pe care o primesc:

21/09/2021 09:27:32 [eroare] 8475#8475: *16 port invalid în amonte „https:/assets1.com/image.jpg?utm=whatever”, client: [IP], server: domain.com, cerere: „GET /https://assets1.com/image.jpg?utm=whatever HTTP/1.1”, gazdă: „example.com”

Michael Hampton avatar
drapel cz
Acest bloc „locație” nu corespunde cu intrarea din jurnalul de erori pe care ați postat-o. Vă rugăm să postați starea actuală a configurației dvs. _complete_ nginx folosind `nginx -T`.
Imnl avatar
drapel pk
S-a adăugat configurația completă a serverului
Puncte:0
drapel us

Adresa URL a solicitării dvs. inițiale conține prefixul de protocol: https://example.com/https://assets1.com.

Ta Locație bloc captează piesa după primul /, asa de $1 devine https://assets1.com.

În dumneavoastră proxy_pass declarația pe care o ai https://$1$is_args$args, care devine https://https://assets1.com când variabila este extinsă.

nginx încearcă să analizeze https://assets1.com ca o pereche domeniu:port, deci partea de domeniu a URL este https iar port este un șir gol.

Pentru a rezolva problema, propun următoarea configurație:

locație ~^/https://(.+)$ {
    proxy_pass https://$1$is_args$args;
    ...
}

În acest fel excludem partea de protocol de a fi capturată în $1, astfel încât să avem o adresă URL adecvată. Am adăugat și ancore de început și de sfârșit pentru a face expresia regex mai robustă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.