解决新的Nginx安装的步骤

我正在运行Ubuntu 12.04的新服务器上设置Nginx。 以下是我迄今为止所做的:

  1. 安装nginx

    aptitude -y install nginx 
  2. 删除了默认的vhostconfiguration:

     rm /etc/nginx/sites-enabled/* 
  3. 添加了我自己的虚拟主机configuration:

     mv myapp.conf /etc/nginx/sites-enabled/ 
  4. 入门nginx:

     service nginx start 

虚拟主机文件看起来像这样:

 upstream unicorn_server { server unix:/tmp/APP_NAME.sock fail_timeout=0; } server { listen 80 default deferred; client_max_body_size 4G; server_name _; keepalive_timeout 5; access_log /var/log/nginx/APP_NAME.access.log; root /var/www/APP_NAME/current/public; # auth try_files $uri/index.html $uri.html $uri @app; location @app { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # proxy_set_header X-Forwarded-Proto https; proxy_set_header Host $http_host; proxy_redirect off; proxy_pass http://unicorn_server; } error_page 500 502 503 504 /500.html; location = /500.html { root /var/www/APP_NAME/current/public; } } 

我可以确认Nginx正在运行:

 service nginx status * nginx is running 

但是,我似乎无法访问它:

 curl 123.456.789.0 # example IP curl: (7) couldn't connect to host 

我还没有启动独angular兽服务器,但这不应该是一个问题。 如果Unicorn未运行,我希望看到一个502错误。 错误或访问日志中没有输出。 我应该采取什么措施来解决这个问题?

  • 在configuration文件中运行nginx -t
  • 检查日志文件 – 既可以是你指定的文件,也可以是nginx在加载configuration文件之前,如果不能使用指定文件的那些“默认”文件,或者当然也可能包含错误消息的全局日志
  • 停止nginx,并手动启动(即不使用init脚本)并查找输出。 杀死你的nginx,然后用init脚本启动它。
  • 检查netstat是否显示nginx正在监听。 如果没有,请不要打扰testing,如果它是可及的,find原因。 如果正在侦听,请在本地进行testing(wget)以确定nginx或连接是否中断。
  • 如果它没有受到伤害(即机器上没有其他东西在运行),请尝试重新启动它。

关于你发布的这个configuration唯一不寻常的是在你的listen指令中使用deferred

看起来有些网站在他们的示例configuration中提供了这个function,并且“推荐”了它,但实际上并没有解释它的function 。 (这不是很多,除非它被设置在两端,否则,事情真的很奇怪,因为这在技术上巧妙地破坏了TCP协议。)

我要做的绝对的第一件事就是从你的listen指令中删除这个deferred选项。

即使这不能解决问题,我也不会放弃。 如果您想稍后调查其预期的性能优势,则可以在精心控制的testing环境中进行。

服务器上的防火墙阻止连接到80端口? 尝试在服务器上执行“curl localhost”来检查它是否是本地可访问的。