使用nginx的简单反向代理

使用nginx的简单反向代理,nginx,proxy,Nginx,Proxy,我正在http://localhost:3000,我想以http://localhost。我正在尝试使用nginx做反向代理,看起来应该很简单,但我还没有让它工作。我可以在http://localhost:3000但我在http://localhost。这是我第一次玩弄nginx,所以我不确定出了什么问题,在哪里可以找到更多细节。我还看了10多个堆栈溢出问题、nginx教程和问题,但到目前为止,它们都没有帮助我 下面是/etc/nginx/nginx.conf的一段代码 user www-dat

我正在
http://localhost:3000
,我想以
http://localhost
。我正在尝试使用nginx做反向代理,看起来应该很简单,但我还没有让它工作。我可以在
http://localhost:3000
但我在
http://localhost
。这是我第一次玩弄nginx,所以我不确定出了什么问题,在哪里可以找到更多细节。我还看了10多个堆栈溢出问题、nginx教程和问题,但到目前为止,它们都没有帮助我

下面是/etc/nginx/nginx.conf的一段代码

user www-data;
worker_processes  1;

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

events {
    worker_connections  1024;
    # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;

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

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    tcp_nodelay        on;

    gzip  on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
conf.d目录中唯一的.conf文件:/etc/nginx/conf.d/default.conf

upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 80;

    server_name localhost;

    access_log  /var/log/nginx/localhost.access.log;
    location / {
        proxy_pass http://backend;
        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;
        proxy_set_header  X-Forwarded-Proto  http;
        proxy_set_header X-NginX-Proxy true;
    }
}
我也跟着做了设置

另外,/etc/nginx/sites enabled/default的内容,也是sites enabled目录中唯一的文件

server {
    listen   80 default;
    server_name  localhost;

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

    location / {
            root   /var/www/nginx-default;
            index  index.html index.htm;
    }

    location /doc {
            root   /usr/share;
            autoindex on;
            allow 127.0.0.1;
            deny all;
    }

    location /images {
            root   /usr/share;
            autoindex on;
    }
}
当我重新启动nginx时。。。(输出)

我在日志中看到:

2014/10/15 23:28:12 [warn] 5800#0: conflicting server name "localhost" on 0.0.0.0:80, ignored

更改默认端口:
rails s-p80

问题是服务器
localhost:80
定义了两次:

  • 在“conf.d/default.conf”中
  • 在“站点已启用/默认”中
当对“localhost:80”的请求到达时,nginx会感到困惑——哪个服务器应该为请求提供服务

您应该将“conf.d/default.conf”文件中的
server
块替换为“sites enabled/default”文件中的
server
块的内容(将其删除)


因为“conf.d/*.conf”文件用于配置模块\功能,而不是用于托管描述的服务器。

是否需要使用nginx?如果您只想在端口80而不是默认的3000上访问您的webapp,那么还有其他选项。我可以使用任何可以进行端口重定向的选项。你有什么建议@jmeraI没有建议端口重定向。我建议在你的开发机器上的端口80上运行rails应用程序:
rails s-p80
。要实现这一点,您根本不需要nginx。。。通常,在开发环境中,您不需要像nginx或apache这样的http服务器。这确实以一种简单的方式满足了我的需要!非常感谢。
2014/10/15 23:28:12 [warn] 5800#0: conflicting server name "localhost" on 0.0.0.0:80, ignored