在 Amazon EC2 实例上,我们运行着 nginx 和 Tomcat。Nginx 将所有请求代理到同一实例上运行的端口 8080 上的 Tomcat。
运行了一天,一切正常,但之后 nginx 日志中出现大量 upstream timed out (110: Connection timed out)
错误,网站无法访问。现在 Tomcat 可以在端口 8080 上正常访问。所以问题似乎出在 nginx 和 Tomcat 之间。
看起来是这样nginx.conf
的,
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name domainname.com;
rewrite ^/(.*) http://www.domainname.com/$1 permanent;
}
server {
listen 80;
server_name www.domainname.com;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
proxy_read_timeout 120;
proxy_connect_timeout 120;
}
}
}
任何见解都会有帮助。
更新: 重启实例后,网站开始工作了。我完全不知道问题出在哪里,但我会监控一段时间,看看是否有这样的问题。
答案1
请使用以下方式进行重定向:
server {
listen 80;
server_name domainname.com;
return 301 $scheme://www.$server_name$request_uri;
}
将以下内容添加到您的配置中:
error_log /var/log/nginx/error.log debug;
并评估,或在此发布结果。