3
votes

Comment utiliser le proxy inverse NGINX, et proxy le port et le chemin vers l'url amont?

J'ai configuré le proxy inverse nginx selon les instructions ici: https://medium.com/@mightywomble/how-to-set-up-nginx-reverse-proxy-with-lets-encrypt-8ef3fd6b79e5

Mon site activé / mysite.conf ressemble à

server {      
 server_name mynginxreverseproxy.com; 
 set $upstream serverip:$server_port/; 
 location / {  
    proxy_pass_header Authorization;  
    proxy_pass http://$upstream;  
    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_http_version 1.1;  
    proxy_set_header Connection “”;  
    proxy_buffering off;  
    client_max_body_size 0;  
    proxy_read_timeout 36000s;  
    proxy_redirect off;  }

    listen 443 ssl; # paths to ssl cert files

} server {
    if ($host = mynginxreverseproxy.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


 server_name mynginxreverseproxy.com; listen 80;
    return 404; 

}

Je voudrais transférer le port et le chemin vers mon serveur, comme https://mynginxreverseproxy.com:portnumber/myurl -> à serverip: com: portnumber / myurl. J'ai pu faire fonctionner cela pour un seul port qui peut rediriger le port 80 vers le port de mon choix, mais comment le mettre à l'échelle pour qu'il fonctionne pour de nombreux ports?

J'ai de nombreux ports mappage que je voudrais configurer, il serait donc idéal de le faire en utilisant une variable, plutôt que de coder en dur chaque mappage de port.

Comment puis-je transmettre le port et le chemin en utilisant une variable dans le fichier conf?


0 commentaires

3 Réponses :


2
votes

J'ai fini par faire fonctionner cela après de nombreux débogages et configurations.

Le

set $ upstream serverip: $ server_port

était correct, mais je manquais le

Directive listen qui permet au serveur NGINX d'écouter sur un port particulier, il écoute sur le port 80 par défaut. Cependant, le port 80 n'était pas le port que je voulais faire passer au serveur en amont.


0 commentaires

1
votes

Peut-être que quelqu'un trouverait cela utile, il existe un utilitaire en ligne où vous pouvez générer une configuration nginx. Très convivial

Vous pouvez le trouver ici


0 commentaires

0
votes

Une autre façon de faire cela (exemple de configuration ci-dessous)

upstream myserver {
    server ip-address:port;
}

server {
  listen 80;      //IPv4
  listen [::]:80; //IPv6
  location / {
    proxy_pass http://myserver /;
    proxy_set_header Host $http_host;
    ...rest of your headers...
  }
}


0 commentaires