que proceso funcionalidad funciona como nginx

proceso - NGinx ¿Ubicación de www pública predeterminada?



proceso nginx (26)

He trabajado con Apache anteriormente, por lo que soy consciente de que la raíz web pública predeterminada suele ser /var/www/ .

Recientemente comencé a trabajar con nginx, pero parece que no puedo encontrar la raíz web pública predeterminada.

¿Dónde puedo encontrar la raíz web pública predeterminada para nginx?


''raíz pública web predeterminada'' se puede encontrar en nginx -V salida:

nginx -V nginx version: nginx/1.10.1 built with OpenSSL 1.0.2h 3 May 2016 TLS SNI support enabled configure arguments: --prefix=/var/lib/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx/nginx.pid --lock-path=/run/nginx/nginx.lock --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --user=nginx --group=nginx --with-ipv6 --with-file-aio --with-pcre-jit --with-http_dav_module --with-http_ssl_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_v2_module --with-http_auth_request_module --with-mail --with-mail_ssl_module

El valor de --prefix es la respuesta a la pregunta. para la muestra sobre la raíz es / var / lib / nginx


Ejecute el comando nginx -V y busque el --prefix . Utilice esa entrada para localizar sus rutas por defecto.


El directorio predeterminado de Nginx en Debian es /var/www/nginx-default .

Puede revisar el archivo: /etc/nginx/sites-enabled/default

y encontrar

server { listen 80 default; server_name localhost; access_log /var/log/nginx/localhost.access.log; location / { root /var/www/nginx-default; index index.html index.htm; }

La raíz es la ubicación por defecto.


El valor predeterminado está relacionado con la opción de prefix del script de configure cuando se compila nginx; Aquí hay una extraña muestra de 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

Posteriormente, el valor predeterminado de la root se establece en el directorio html (según la root ), que se encuentra dentro del prefix , como puede verificarse observando la variable $document_root desde un archivo de configuración simple:

# 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

Sin embargo, las distribuciones malvadas como Debian parecen modificarlo un poco, para mantenerte entretenido:

% 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;

Por lo tanto, en esta instancia de Debian, puede ver que la raíz está finalmente establecida en /usr/share/nginx/www .

Pero como vio con la configuración del servidor de muestra que serviría su valor $document_root sobre http, la configuración de nginx es lo suficientemente simple como para que pueda escribir su propia configuración en una o dos líneas, especificando la root requerida para satisfacer sus necesidades exactas .


En Mac OS X, la instalación de nginx con brew hace que el directorio predeterminado:

/usr/local/var/www

Asi que:

root html

medio

root /usr/local/var/www/html

No hay un directorio html por lo que tendría que ser creado manualmente.


En Mac instala nginx con cerveza:

/usr/local/etc/nginx/nginx.conf

location / { root html; # **means /usr/local/Cellar/nginx/1.8.0/html and it soft linked to /usr/local/var/www** index index.html; }


En Ubuntu, la ubicación del directorio raíz predeterminado de Nginx es /usr/share/nginx/html


En mi caso estaba en /usr/share/nginx/html

Puedes intentar buscar realizando una búsqueda.

find / -name html


Exigir la información por este comando:

cat /etc/nginx/sites-enabled/default |grep "root"

Recibí: root /usr/share/nginx/www;


La carpeta web predeterminada para nginx depende de cómo la instaló, pero normalmente está en estas ubicaciones:

/usr/local/nginx/html /usr/nginx/html


Mi nginx en Ubuntu es "nginx version: nginx / 1.9.12 (Ubuntu)" y la ruta raíz es / var / www / html /

La información de Ubuntu es: No hay módulos LSB disponibles. ID del distribuidor: Ubuntu Descripción: Ubuntu 16.04 LTS Release: 16.04 Nombre en clave: xenial

En realidad, si acaba de instalar nginx en Ubuntu, puede ir a "/ etc / nginx / sites-available" y consultar el archivo predeterminado, hay una configuración como "root / web / root / path / goes / here". Y eso es lo que buscas.


Para AWS EC2 Linux encontrará aquí:

/usr/share/nginx


Para CentOS, Ubuntu y Fedora, el directorio predeterminado es /usr/share/nginx/html


Para las imágenes de Ubuntu y docker:

/usr/share/nginx/html/


Puede buscarlo, sin importar dónde lo hayan movido (el administrador del sistema se movió o una versión más reciente de nginx)

encontrar / -nombre nginx


Puede encontrarlo en / var / www / que es el directorio predeterminado para nginx y apache, pero puede cambiarlo. paso 1 vaya a la siguiente carpeta / etc / nginx / sites-available

el paso 2 edita el archivo predeterminado en el que puedes encontrar un bloque de servidor en el que habrá una línea llamada raíz que es la que define la ubicación.


Si está en Ubuntu 14.04, puede encontrar el directorio nginx www en la siguiente ruta:

yusuf@yusuf-he:/usr/share/nginx/html$ pwd /usr/share/nginx/html yusuf@yusuf-he:/usr/share/nginx/html$


Si está instalando en Ubuntu usando apt-get, intente /usr/share/nginx/www .

EDITAR:

En versiones más recientes, la ruta ha cambiado a: /usr/share/nginx/html


Si necesita encontrar la carpeta raíz pública nginx que se definió en el momento de la compilación, simplemente puede revisar su archivo access.log.

  1. Abre nginx.conf
  2. Encuentra la directiva log_format
  3. El valor de log_format es una cadena de plantilla que se utiliza para escribir información en el archivo access.log . Puede agregar la variable $ document_root a esta cadena de plantilla para registrar la ubicación raíz predeterminada de www en un archivo.

Aquí hay un ejemplo de la sección http de nginx.conf con la directiva log_format modificada, $ document_root se agrega al comienzo de la cadena:

http { include /etc/nginx/mime.types; default_type application/octet-stream; ## ADD $document_root HERE ## log_format main ''$document_root $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; etc. .......

  1. Luego haga una copia de seguridad de todos los archivos de configuración * .conf en el directorio conf.d y cree allí el archivo de configuración, test.conf con las siguientes líneas:

    server{ listen 80; server_name localhost; }

    1. Agregue la siguiente línea al archivo / etc / hosts: 127.0.0.1 localhost

    2. Recargar la configuración de nginx -s reload : nginx -s reload

    3. Enviar solicitud GET a http: // localhost : curl http://localhost

    4. Verifique la última cadena de access.log : tail -n 1 /var/log/nginx/access.log

Aquí está la salida de muestra de este comando, donde / etc / nginx / html es la raíz predeterminada del documento definida en el momento de la compilación:

/etc/nginx/html 127.0.0.1 - - [15/Mar/2017:17:12:25 +0200] "GET / HTTP/1.1" 404 169 "-" "curl/7.35.0" "-"


Si su configuración no incluye una root /some/absolute/path; declaración, o incluye uno que usa una ruta relativa como root some/relative/path; , entonces la ruta resultante depende de las opciones de tiempo de compilación.

Probablemente, el único caso que le permitiría hacer una suposición informada sobre lo que esto significa para usted sería, si usted mismo downloaded y compiló la fuente. En ese caso, las rutas serían relativas a lo que se usara --prefix . Si no lo cambió, el valor predeterminado es /usr/local/nginx . Puede encontrar los parámetros con los que nginx se compiló a través de nginx -V , enumera --prefix como el primero.

Debido a que la directiva root predeterminada en html , esto daría como resultado, por supuesto, que /usr/local/nginx/html sea ​​la respuesta a su pregunta.

Sin embargo, si instaló nginx de otra manera, todas las apuestas están desactivadas. Su distribución podría utilizar rutas predeterminadas completamente diferentes. Aprender a averiguar qué tipo de valores predeterminados utiliza su distribución de elección para las cosas es otra tarea completamente.


Simplemente puede asignar la carpeta raíz de nginx a la ubicación de su sitio web:

nano /etc/nginx/sites-enabled/default

dentro del archivo predeterminado , busque la raíz en la etiqueta del servidor y cambie la carpeta predeterminada de su sitio web, por ejemplo, mis sitios web están en / var / www

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www; <-- Here! ...

Cuando estaba evaluando nginx, apache2 y lighttpd, los asigné a mi sitio web en / var / www . He encontrado esta la mejor manera de evaluar de manera eficiente.

Luego, puede iniciar / detener el servidor de su elección y ver cuál funciona mejor.

p.ej

service apache2 stop service nginx start

Por cierto, nginx en realidad es muy rápido!


Solo para tener en cuenta que la página de índice predeterminada para el servidor nginx también mostrará la ubicación raíz. Desde el nginx (1.4.3) en la AMI de Amazon Linux, obtiene lo siguiente:

Esta es la página index.html predeterminada que se distribuye con nginx en la AMI de Amazon Linux. Se encuentra en / usr / share / nginx / html.

Ahora debe colocar su contenido en una ubicación de su elección y editar la directiva de configuración raíz en el archivo de configuración nginx /etc/nginx/nginx.conf


Volcar la configuración:

$ nginx -T ... server { ... location / { root /usr/share/nginx/html; ... } ... }

Lo que obtenga puede ser diferente, ya que depende de cómo se configuró / instaló su nginx .

Referencias:

Actualización: existe cierta confusión sobre el tema de si / cuando la opción -T se agregó a nginx . Fue documentado en la página de manual por vl-homutov el 16 de junio de 2015, que se convirtió en parte de la versión v1.9.2 . Incluso se menciona en las notas de la versión . La opción -T ha estado presente en todas las versiones de nginx desde entonces, incluida la disponible en Ubuntu 16.04.1 LTS:

root@23cc8e58640e:/# nginx -h nginx version: nginx/1.10.0 (Ubuntu) Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/share/nginx/) -c filename : set configuration file (default: /etc/nginx/nginx.conf) -g directives : set global directives out of configuration file


como la mayoría de los usuarios aquí dijeron, está en este camino:

/usr/share/nginx/html

Esta es la ruta por defecto, pero puedes hacer la tuya.

todo lo que necesita es crear uno en el árbol raíz del servidor web y otorgarle algunos permisos "no 0777" y solo para un usuario y visibles solo para ese usuario, pero el final de la ruta es visible para todos desde el final de la ruta Es lo que tus archivos y carpetas serán vistos por el público.

por ejemplo, puedes hacer uno como este:

home_web/site1/public_html/www/

siempre que haga un host virtual en Nginx, puede personalizar su propia ruta de acceso raíz, simplemente agregue algo como esto en su bloque de servidor:

server { listen 80; server_name yoursite.com; root /home_web/site1/public_html/www/; }


puede acceder al archivo de configuración nginx, puede ver la raíz / ruta. en este valor predeterminado de nginx apache en /var/www/html


Para nginx / 1.4.6 (Ubuntu)

/etc/nginx$ cat /etc/nginx/sites-available/default | grep -i root - root /usr/share/nginx/html;