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 

通过这样的方法,就可以让你的网站正常访问。

posted @ 2020-11-04 11:16  逝年的我们  阅读(7941)  评论(0编辑  收藏  举报