我正在运行Ubuntu 12.04的新服务器上设置Nginx。 以下是我迄今为止所做的:
安装nginx:
aptitude -y install nginx
删除了默认的vhostconfiguration:
rm /etc/nginx/sites-enabled/*
添加了我自己的虚拟主机configuration:
mv myapp.conf /etc/nginx/sites-enabled/
入门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错误。 错误或访问日志中没有输出。 我应该采取什么措施来解决这个问题?
nginx -t 关于你发布的这个configuration唯一不寻常的是在你的listen指令中使用deferred 。
看起来有些网站在他们的示例configuration中提供了这个function,并且“推荐”了它,但实际上并没有解释它的function 。 (这不是很多,除非它被设置在两端,否则,事情真的很奇怪,因为这在技术上巧妙地破坏了TCP协议。)
我要做的绝对的第一件事就是从你的listen指令中删除这个deferred选项。
即使这不能解决问题,我也不会放弃。 如果您想稍后调查其预期的性能优势,则可以在精心控制的testing环境中进行。
服务器上的防火墙阻止连接到80端口? 尝试在服务器上执行“curl localhost”来检查它是否是本地可访问的。