快捷搜索: 王者荣耀 脱发

踩坑:nginx代理服务器报500错误

近期公司开发官网,使用react dva antd 架构,打包后成静态资源文件,在阿里云服务器上面部署nginx作为静态服务器,一切配置好后,按照nginx的配置静态资源地址进行部署,发现最后服务器一直报500错误

nginx的配置文件是在nginx.conf中引入了2个配置文件,一个是admin,一个是default,

admin的配置如下:

server {
       listen 4200;
       listen [::]:4200;

       server_name guest.xxxxx.com;

       root /root/admin/admin/dist;
       index index.html;

       location / {
               try_files $uri $uri/ /index.html;
       }
}

default配置如下:

server {
	listen 80 default_server;
	listen [::]:80 default_server;

	root /var/www/html;


	index index.html index.htm index.nginx-debian.html;

	server_name _;

	location / {
		try_files $uri $uri/ =404;
	}
}

目前是想用一个域名和一个子域名进行映射处理

www.xxxxx.com和admin.xxxxx.com, 阿里云域名映射已经做好,全部指向nginx所在的服务器,一开始以为一个服务器只能用一个80端口,后来朋友提点说nginx子域名也可以代理80端口,意思就是说一台服务器走80端口可以走不止一个,只要你的域名和子域名不重复.

按照以上配置一直提示500 nginx错误.后来朋友提示说不要将文件分开,写在一个文件里面,并且server_name直接写域名,于是更改为如下配置:

server {
	listen 80;
	root /var/www/html;

	index index.html index.htm index.nginx-debian.html;

	server_name www.xxxxx.com;

	location / {
		# First attempt to serve request as file, then
		# as directory, then fall back to displaying a 404.
		try_files $uri $uri/ =404;
	}
}



server {
	listen 80;
	
	server_name admin.xxxxx.com;
        root /root/admin/admin/dist;
        index index.html;
        location / {try_files $uri $uri/ =404;}
}

这样修改后就没有再报500错误,但是新问题出现了: 报了404错误,然后检查配置的资源路径没问题,最后突然发现日志中出现了nginx没有权限访问该资源路径,后来把资源路径放到了nginx有访问权限的路径下,然后访问就正常了

root /root/admin/admin/dist;

修改为

root /var/www/dist;

root路径下nginx无法访问,需要将路径改为nginx能访问的地方,或者将这个路径的权限放开也可以解决这个问题,考虑到安全问题就选择放在指定位置,没有解开权限

开启了https请一定要将阿里云的443端口放开, 新买服务器默认是关闭的!

经验分享 程序员 微信小程序 职场和发展