本文主要是介绍nginx配置后访问出现白屏怎么办?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
服务器上有两个web服务ab分别指向3000、3001两个端口,使用nginx进行反向代理,配置文件如下:
server {listen 80;server_name www.example.com;location /a/ {proxy_pass http://localhost:3000;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 $scheme;}
}server {listen 80;server_name www.example.com;location /b/ {proxy_pass http://localhost:3001;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 $scheme;}
}
配置好后,重载:sudo systemctl reload nginx
用浏览器访问:www.example.com/a/,浏览器是白屏,没有显示任何内容。
解决的思路:
1、查看日志:
`tail -n 10 /var/log/nginx/error.log`
显示内容如下:
[error] 1104804#1104804: *10 open()
“/usr/share/nginx/html/static/css/main.54631fc9.css” failed (2: No
such file or directory), client: 18.81.26.177, server:
www.example.com, request: “GET /static/css/main.54631fc9.css
HTTP/1.1”, host: “www.example.com”, referrer:
“http://www.example.com/a/”
2、分析
根据错误日志,Nginx正在尝试在/usr/share/nginx/html/static/css/目录下查找main.54631fc9.css文件,但是没有找到。这是因为我的web应用在/a路径下寻找静态文件,但是Nginx在默认的静态文件目录下查找。
3、查找
find / -name main.54631fc9.css
结果什么都没有找到
4、采用二级域名
配置文件调整如下:
server {listen 80;server_name a.example.com;location / {proxy_pass http://localhost:3000;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 $scheme;}
}server {listen 80;server_name b.example.com;location / {proxy_pass http://localhost:3001;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 $scheme;}
}
重载Nginx
在浏览器上b.example.com访问正常,但a.example.com显示Nginx的欢迎页面,并未访问到正确的web页面。
5、再查日志
`tail -n 10 /var/log/nginx/error.log`
显示内容如下:
[error] 1106994#1106994: *780 open()
“/usr/share/nginx/html/favicon.ico” failed (2: No such file or
directory), client: 18.81.26.177, server: example.com, request: “GET
/favicon.ico HTTP/1.1”, host: “a.example.com”, referrer:
“http://a.example.com/”
6、再分析
根据错误日志中的提示信息,可以看到请求的是/favicon.ico文件,但是在/usr/share/nginx/html/目录下找不到该文件。因此,与该错误相关的语句是代理到a.example.com的location块中的proxy_pass语句。这条语句将请求代理到localhost:3000,而不是/usr/share/nginx/html/目录下的文件。
7、再查找
find / -name favicon.ico
找到/favicon.ico文件在以下目录:
/usr/local/src/a/web/berry/public/favicon.ico /usr/local/src/a/web/default/public/favicon.ico
8、添加多一个location
location = /favicon.ico {alias /usr/local/src/a/web/berry/public/favicon.ico;}
a应用能正常访问了。
9、完整的配置文件
server {listen 80;server_name a.example.com;location = /favicon.ico {alias /usr/local/src/a/web/berry/public/favicon.ico;}location / {proxy_pass http://localhost:3000;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 $scheme;}
}server {listen 80;server_name b.example.com;location / {proxy_pass http://localhost:3001;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 $scheme;}
}
10、小结
nginx配置后遇到问题,查error.log是解决问题的关键,通过仔细分析里面的错误提示信息,不难找到解决的办法。
学习笔记,供后来者参考。
这篇关于nginx配置后访问出现白屏怎么办?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!