Configuration Nginx: proxy inverse frontal vers un autre port

22

J'ai un petit serveur Web qui sert les demandes sur le port 5010 plutôt que 80.

Je voudrais utiliser nginx comme proxy frontal pour recevoir des demandes sur le port 80, puis laisser ces demandes être traitées par le port 5010.

J'ai installé nginx avec succès et il fonctionne correctement sur Ubuntu Karmic.

Mais, mes tentatives pour reconfigurer le nginx.conf par défaut n'ont pas réussi.

J'ai essayé d'inclure dans la directive serveur l'argument listen pour le port 5010.

J'ai également essayé la directive proxy_pass.

Toutes les suggestions sur les changements qui doivent être faits ou les directives qui doivent être définies pour avoir juste la redirection de port

Ted Karmel
la source

Réponses:

22

Je suppose que nginx n'est pas le serveur qui écoute sur le port 5010 ainsi que 80, n'est-ce pas? Quelque chose d'autre écoute sur 5010 et vous souhaitez avoir un proxy nginx sur ce serveur?

Si c'est le cas, voici une belle configuration d'échantillon que j'ai utilisée avec succès dans le passé:

server {
        listen       80;
        server_name  <YOUR_HOSTNAME>;
        location / {
            proxy_pass         http://127.0.0.1:5010/;
            proxy_redirect     off;

            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            client_max_body_size       10m;
            client_body_buffer_size    128k;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
}

Je crois que cela devrait accomplir ce que vous cherchez. Bonne chance!

vmfarms
la source
cela ne fonctionne pas sur macOS brew nginx. Vous devez ajouter un bloc http {} entourant le serveur, sinon: nginx: [Emerg] la directive "server" n'est pas autorisée ici
muenalan
13

Assez minimaliste - j'ai laissé les paramètres de proxy par défaut, bien que vous souhaitiez peut-être y regarder pour vous adapter à vos besoins.

# NGINX configuration

# System configuration ##################
worker_processes  3;
events {
    worker_connections  1024;
}
user nobody;

# Web configuration #####################
http {
    server {
        listen 80 default;
        location / {
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header   Host             $host;

            proxy_pass http://127.0.0.1:5010/;

        }
    }
}
tylerl
la source
2
Tyler - votre solution minimale est bonne. Voilà ce que je voulais. Je vous donnerais des points si je le pouvais mais encore nouveau sur serverfault
Ted Karmel