NGinx Default public www location?

前端 未结 30 1084
野性不改
野性不改 2020-11-28 17:51

I have worked with Apache before, so I am aware that the default public web root is typically /var/www/.

I recently started working with nginx, but I ca

30条回答
  •  抹茶落季
    2020-11-28 18:08

    The default is related to the prefix option of the configure script when nginx is compiled; here's some strange sample from Debian:

    % nginx -V | & tr ' ' "\n" | fgrep -e path -e prefix
    --prefix=/etc/nginx
    --conf-path=/etc/nginx/nginx.conf
    --error-log-path=/var/log/nginx/error.log
    --http-client-body-temp-path=/var/lib/nginx/body
    --http-fastcgi-temp-path=/var/lib/nginx/fastcgi
    --http-log-path=/var/log/nginx/access.log
    --http-proxy-temp-path=/var/lib/nginx/proxy
    --http-scgi-temp-path=/var/lib/nginx/scgi
    --http-uwsgi-temp-path=/var/lib/nginx/uwsgi
    --lock-path=/var/lock/nginx.lock
    --pid-path=/var/run/nginx.pid
    

    Subsequently, the default value of root is set to the html directory (as per the documentation of the root directive), which happens to be within prefix , as can be verified by looking at the $document_root variable from a simple configuration file:

    # printf 'server{listen 4867;return 200 $document_root\\n;}\n' \
        >/etc/nginx/conf.d/so.10674867.conf
    
    # nginx -s reload && curl localhost:4867
    /etc/nginx/html
    

    However, evil distributions like Debian seem to modify it quite a bit, to keep you extra entertained:

    % fgrep -e root -e include /etc/nginx/nginx.conf
        include /etc/nginx/mime.types;
        #include /etc/nginx/naxsi_core.rules;
        #passenger_root /usr;
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    
    % fgrep -e root -e include \
        /etc/nginx/conf.d/*.conf /etc/nginx/sites-enabled/*
    /etc/nginx/conf.d/so.10674867.conf:server{listen 4867;return 200 $document_root\n;}
    /etc/nginx/sites-enabled/default:   root /usr/share/nginx/www;
    /etc/nginx/sites-enabled/default:       # include /etc/nginx/naxsi.rules
    /etc/nginx/sites-enabled/default:   #   root /usr/share/nginx/www;
    /etc/nginx/sites-enabled/default:   #   include fastcgi_params;
    /etc/nginx/sites-enabled/default:   # deny access to .htaccess files, if Apache's document root
    /etc/nginx/sites-enabled/default:#  root html;
    /etc/nginx/sites-enabled/default:#  root html;
    

    So, on this instance of Debian, you can see that the root is finally set to /usr/share/nginx/www.

    But as you saw with the sample server configuration that would serve its $document_root value over http, configuring nginx is simple enough that you can write your own configuration in a matter of a single line or two, specifying the required root to meet your exact needs.

提交回复
热议问题