Nginx простой proxy_pass для localhost не работает - программирование
Подтвердить что ты не робот

Nginx простой proxy_pass для localhost не работает

Я пытаюсь запустить минималистский обратный прокси и придумал следующее:

events {
    worker_connections 4096;
}   

http {
    server {
        listen 80;
        location / {
            proxy_pass http://127.0.0.1:3000/;
        }   
    }   
}   

`

Однако, когда я обращаюсь к этому серверу, я получаю стандартную "добро пожаловать на страницу nginx" вместо ответа с сервера, работающего на порту 3000.

Если я ssh на машине и запустил curl http://127.0.0.1:3000/, я получаю желаемый результат (и в конечном итоге я запустил этот сервер на порту 80, и он работал нормально, поэтому я знаю, что он связан с конфигурацией обратного прокси).

4b9b3361

Ответ 1

У меня была точно такая же проблема. Я просто прокомментировал строку в файле nginx.conf:

include /etc/nginx/sites-enabled/*;

изменено на

#include /etc/nginx/sites-enabled/*;

Ответ 2

Объясните сообщение Vijay через ответ, так как обмен еще не позволит мне прокомментировать.

Комментирование каталога с поддержкой сайтов, вероятно, требуется, потому что вы используете стандартный файл nginx.conf. Вы заметите, что строка уже находится в директиве http. Если вы используете стандартную конфигурацию, вы переопределяете директиву http в другой директиве http. Вы также можете обновить файл своего сайта только с директивой сервера, а не с директивой http.

Стандартный файл nginx.conf:

worker_processes  4;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
  worker_connections  1024;
}

http {

  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;

  access_log    /var/log/nginx/access.log;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout  65;

  gzip  on;
  gzip_http_version 1.0;
  gzip_comp_level 5;
  gzip_proxied any;
  gzip_vary off;
  gzip_types text/plain text/css application/x-javascript text/xml application/xml application/rss+xml application/atom+xml text/javascript application/javascript application/json text/mathml;
  gzip_min_length  1000;
  gzip_disable     "MSIE [1-6]\.";

  server_names_hash_bucket_size 64;
  types_hash_max_size 2048;
  types_hash_bucket_size 64;
  client_max_body_size 1024;

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

пример совместимого файла сайта в разрешенных сайтах:

server {
    server_name {server name};
    listen 80;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    location / {
        proxy_pass http://example.com:8080;
        proxy_set_header Host $host;
    }
}

Ответ 3

Возможно, также поможет проверка ссылки с сайтов, доступных на сайты. У меня была точка симлинк в никуда, поэтому nginx никогда не читал конфигурацию. В моем случае это было

ls -lh /etc/nginx/sites-enabled
lrwxrwxrwx 1 root root 23 Feb 19 11:11 default -> sites-available/default

вместо

ls -lh /etc/nginx/sites-enabled
lrwxrwxrwx 1 root root 23 Feb 19 11:11 default -> ../sites-available/default