2013-03-11 86 views
14

我试图运行一个最低限度的反向代理,并想出了以下内容:nginx的简单proxy_pass到本地主机不工作

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它工作得很好,所以我kn它必须处理反向代理配置)。

+0

相同的配置工作正常,在我的devbox。似乎你的网络服务器的网络有问题。你有没有尝试重新启动你的网络? – 2013-03-11 13:27:23

+0

你确定你没有在其他conf文件中的其他代理指令? proxy.conf? – Pixou 2013-03-11 16:57:51

+0

是否删除尾部斜线做任何事情? – Bart 2013-03-14 22:54:40

回答

22

我有完全相同的问题。我只是注释掉一条线在我的nginx.conf文件:

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

通过回答改为

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

这工作对我来说,谢谢。它确实禁用了什么? – bengem 2014-06-29 11:37:31

+0

你说什么不行。我没有'/ etc/nginx/sites-enabled/*;'在'/ etc/nginx'文件夹中的任何地方发表评论或配置仍然存在并且遇到问题 – Green 2017-02-24 05:25:00

+0

@Green有点迟了,但是碰巧这个问题我自己。在我的情况下,包含文件是'/etc/nginx/conf.d/ *。conf' - 这包括与我的站点配置冲突的默认站点的配置。在你的情况下,它可能是代理配置本身的问题 – codemonkey 2017-03-17 17:53:38

4

Explainng维杰的帖子,因为交换不会让我评论。

注释启用网站的目录可能是必需的,因为您使用的是标准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/*; 
} 

例如compatiable站点文件站点启用-:

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; 
    } 
} 
+0

你说什么不行。我在nginx文件夹的任何地方没有任何'include/etc/nginx/sites-enabled/*;'并且遇到问题 – Green 2017-02-24 05:24:04

-1

检查从链接的网站,启用站点可用可能有所帮助。 我的符号链接指向无处,因此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