nginx代理的配置和檔案訪問許可權配置
第一、
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埠可以走不止一個,只要你的域名和子域名不重複.
按照以上配置一直提示500nginx錯誤.後來朋友提示說不要將檔案分開,寫在一個檔案裡面,並且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 a404. 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能訪問的地方,或者將這個路徑的許可權放開也可以解決這個問題,考慮到安全問題就選擇放在指定位置,沒有解開許可權
nginx的許可權配置:
server { listen 80 default_server; server_name zengfanping.com www.zengfanping.com; root /home/zengfp/www/blog/public; index index.html; access_log /var/log/nginx/host.access.log main; error_log /var/log/nginx/host.error.log; }
配置好後重新載入nginx:
nginx -s reload
然後再 以域名zengfanping.com進行訪問,出現了403 forbidden錯誤。
在相關資料的理解下,個人認為:
1、nginx使用者和zengfp使用者是兩個獨立的使用者,nginx使用者不能操作zengfp使用者下的目錄,如果想要操作zengfp使用者下的檔案,需要對齊授權操作
2、如果想使用nginx使用者,可以把專案目錄放到nginx使用者目錄下,nginx使用者的目錄一般在/usr/share/nginx/html,這樣的話也是比較方便的。
3、使用root使用者啟動nginx,root使用者擁有最高許可權。
做法如下,開啟nginx.conf。本人的nginx.conf路徑:/etc/nginx/nginx.conf
user root;//把這裡的nginx改為root worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; }
配置好後,還需要重啟nginx服務:nginx -s reload
通過這樣的方法,就可以讓你的網站正常訪問。