1. 程式人生 > >踩坑:nginx代理伺服器報500錯誤

踩坑: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埠放開, 新買伺服器預設是關閉的!