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端口可以走不止一個,只要你的域名和子域名不重復.

按照以上配置一直提示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能訪問的地方,或者將這個路徑的權限放開也可以解決這個問題,考慮到安全問題就選擇放在指定位置,沒有解開權限

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 

通過這樣的方法,就可以讓你的網站正常訪問。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM