Tutorial de configuración de rutas estáticas de Nginx

Instrucciones de configuración para recursos estáticos de Nginx

escuchar comando

listen: Se utiliza para configurar el puerto de escucha.

gramática

escucha dirección[:puerto] [servidor_predeterminado]...; puerto de escucha [servidor_predeterminado]...;

valores predeterminados

escucha *:80 | *:8000

Ubicación

servidor

La configuración de listen es más flexible. Familiaricémonos con los métodos de configuración más utilizados a través de algunos ejemplos:

listen 127.0.0.1:8000; // listen localhost:8000 escucha la IP y el puerto especificados

listen 127.0.0.1; Escuche todos los puertos de la IP especificada

escucha 8000; escucha las conexiones en el puerto especificado

listen *:8000; escucha las conexiones en el puerto especificado

El atributo default_server es un identificador que se utiliza para configurar este host virtual como el host predeterminado. El llamado host predeterminado significa que si la dirección: puerto correspondiente no coincide, se ejecutará de forma predeterminada. Si no se especifica, se utiliza el primer servidor de forma predeterminada.

server{
	listen 8080;
	server_name 127.0.0.1;
	location /{
		root html;
		index index.html;
	}}
server{
	listen 8080 default_server;
	server_name localhost;
	default_type text/plain;
	return444'This is a error request';}

directiva nombre_servidor

server_name: se utiliza para establecer el nombre del servicio de host virtual.

127.0.0.1, servidor local, nombre de dominio [ www.baidu.com | www.jd.com ]

gramática

nombre_servidor nombre ...; el nombre puede proporcionar varios medios separados por espacios

valores predeterminados

nombre del servidor "";

Ubicación

servidor

Hay tres formas de configurar server_name, a saber:

· Coincidencia exacta

· Coincidencia de comodines

· Coincidencia de expresiones regulares

Método de configuración 1: coincidencia exacta

como

server {
	listen 80;
	server_name www.itcast.cn www.itheima.cn;
	...}

Puntos de conocimiento complementarios:

hosts es un archivo de sistema sin extensión, que se puede abrir con el Bloc de notas y otras herramientas. Su función es establecer una "base de datos" de asociación entre algunos nombres de dominio de sitios web de uso común y sus direcciones IP correspondientes. Al ingresar una URL, el sistema primero buscará automáticamente la dirección IP correspondiente del archivo de hosts. Una vez encontrada, el sistema abrirá inmediatamente la página web correspondiente. Si no la encuentra, el sistema enviará la URL al servidor de resolución de nombres de dominio DNS para la resolución de la dirección IP.

ventanas:C:\Windows\System32\drivers\etc

centos:/etc/anfitriones

Debido a que al nombre de dominio se le cobra una determinada tarifa, podemos modificar el archivo de hosts para crear algunos nombres de dominio virtuales para su uso. Debe modificar el archivo /etc/hosts para agregar

vim /etc/hosts
127.0.0.1 www.itcast.cn
127.0.0.1 www.itheima.cn

Método de configuración 2: use la configuración comodín

El comodín "*" se admite en server_name, pero debe tenerse en cuenta que el comodín no puede aparecer en medio del nombre de dominio y solo puede aparecer en el primer o último párrafo, como:

server {
	listen 80;
	server_name  *.itcast.cn	www.itheima.*;
	# www.itcast.cn abc.itcast.cn www.itheima.cn www.itheima.com
	...}

La siguiente configuración reportará un error

server {
	listen 80;
	server_name  www.*.cn www.itheima.c*
	...}

Configuración 3: usar la configuración de expresiones regulares

Las expresiones regulares se pueden usar en server_name, y ~ se usa como el comienzo de la cadena de expresión regular.

expresiones regulares comunes

el código

ilustrar

^

coincidir con el principio de la cadena de búsqueda

ps

coincide con el final de la cadena de búsqueda

.

coincide con cualquier carácter individual excepto nueva línea \n

\

Carácter de escape para marcar el siguiente carácter como especial

[xyz]

Conjunto de caracteres, coincide con cualquier carácter especificado

[Arizona]

rango de caracteres, coincide con cualquier carácter en el rango especificado

\w

Haga coincidir cualquiera de los siguientes caracteres AZ az 0-9 y guión bajo, equivalente a [A-Za-z0-9_]

\d

Coincidencia de caracteres de dígitos, equivalente a [0-9]

{norte}

coincide exactamente n veces

{norte,}

coincidir al menos n veces

{Nuevo Méjico}

Coincidir al menos n veces y como máximo m veces

*

Cero o más veces, equivalente a {0,}

+

Una o más veces, equivalente a {1,}

?

cero o una vez, equivalente a {0,1}

La configuración es la siguiente:

server{
        listen 80;
        server_name ~^www\.(\w+)\.com$;
        default_type text/plain;return200 $1  $2..;}

Nota ~ no se pueden agregar espacios después, y los corchetes pueden tomar valores

Orden de ejecución del partido

Dado que la directiva server_name admite comodines y expresiones regulares, en un archivo de configuración que contiene varios hosts virtuales, un nombre puede coincidir correctamente con el server_name de varios hosts virtuales. Cuando esto sucede, ¿de quién es la solicitud actual?

server{
	listen 80;
	server_name ~^www\.\w+\.com$;
	default_type text/plain;
	return200'regex_success';}

server{
	listen 80;
	server_name www.itheima.*;
	default_type text/plain;
	return200'wildcard_after_success';}

server{
	listen 80;
	server_name *.itheima.com;
	default_type text/plain;
	return200'wildcard_before_success';}

server{
	listen 80;
	server_name www.itheima.com;
	default_type text/plain;
	return200'exact_success';}

server{
	listen 80 default_server;
	server_name _;
	default_type text/plain;
	return444'default_server not found server';}

en conclusión:

exact_success
wildcard_before_success
wildcard_after_success
regex_success
default_server not found server!!

No1: coincide exactamente con server_name

No2: el comodín coincide con nombre_servidor correctamente al principio

No3:通配符在结束时匹配server_name成功

No4:正则表达式匹配server_name成功

No5:被默认的default_server处理,如果没有指定默认找第一个server

location指令

server{
	listen 80;
	server_name localhost;
	location /{
	
	}
	location /abc{
	
	}
	...}

location:用来设置请求的URI

默认值

语法

location [ = | ~ | ~* | ^~ |@ ] uri{...}

位置

server,location

uri变量是待匹配的请求字符串,可以不包含正则表达式,也可以包含正则表达式,那么nginx服务器在搜索匹配location的时候,是先使用不包含正则表达式进行匹配,找到一个匹配度最高的一个,然后在通过包含正则表达式的进行匹配,如果能匹配到直接访问,匹配不到,就使用刚才匹配度最高的那个location来处理请求。

属性介绍:

不带符号,要求必须以指定模式开始

server {
	listen 80;
	server_name 127.0.0.1;
	location /abc{
		default_type text/plain;
		return200"access success";
	}}
以下访问都是正确的
http://192.168.200.133/abc
http://192.168.200.133/abc?p1=TOM
http://192.168.200.133/abc/
http://192.168.200.133/abcdef

= : 用于不包含正则表达式的uri前,必须与指定的模式精确匹配

server {
	listen 80;
	server_name 127.0.0.1;
	location =/abc{
		default_type text/plain;
		return200"access success";
	}}
可以匹配到
http://192.168.200.133/abc
http://192.168.200.133/abc?p1=TOM
匹配不到
http://192.168.200.133/abc/
http://192.168.200.133/abcdef

~ : 用于表示当前uri中包含了正则表达式,并且区分大小写

~*: 用于表示当前uri中包含了正则表达式,并且不区分大小写

换句话说,如果uri包含了正则表达式,需要用上述两个符合来标识

server {
	listen 80;
	server_name 127.0.0.1;
	location ~^/abc\w${
		default_type text/plain;
		return200"access success";
	}}
server {
	listen 80;
	server_name 127.0.0.1;
	location ~*^/abc\w${
		default_type text/plain;
		return200"access success";
	}}

^~: 用于不包含正则表达式的uri前,功能和不加符号的一致,唯一不同的是,如果模式匹配,那么就停止搜索其他模式了。

server {
	listen 80;
	server_name 127.0.0.1;
	location ^~/abc{
		default_type text/plain;
		return200"access success";
	}}

设置请求资源的目录root / alias

root:设置请求的根目录

语法

root path;

默认值

root html;

位置

http、server、location

path为Nginx服务器接收到请求以后查找资源的根目录路径。

alias:用来更改location的URI

语法

alias path;

默认值

位置

location

path为修改后的根路径。

以上两个指令都可以来指定访问资源的路径,那么这两者之间的区别是什么?

举例说明:

(1)在/usr/local/nginx/html目录下创建一个 images目录,并在目录下放入一张图片mv.png图片

location /images {
	root /usr/local/nginx/html;}

访问图片的路径为:

http://192.168.200.133/images/mv.png

(2)如果把root改为alias

location /images {
	alias /usr/local/nginx/html;}

再次访问上述地址,页面会出现404的错误,查看错误日志会发现是因为地址不对,所以验证了:

root的处理结果是: root路径+location路径
/usr/local/nginx/html/images/mv.png
alias的处理结果是:使用alias路径替换location路径
/usr/local/nginx/html/images

需要在alias后面路径改为

location /images {
	alias /usr/local/nginx/html/images;}

(3)如果location路径是以/结尾,则alias也必须是以/结尾,root没有要求

将上述配置修改为

location /images/{
	alias /usr/local/nginx/html/images;}

访问就会出问题,查看错误日志还是路径不对,所以需要把alias后面加上 /

小结:

root的处理结果是: root路径+location路径

alias的处理结果是:使用alias路径替换location路径

alias是一个目录别名的定义,root则是最上层目录的含义。

如果location路径是以/结尾,则alias也必须是以/结尾,root没有要求

index指令

index:设置网站的默认首页

语法

index file ...;

默认值

index index.html;

位置

http、server、location

index后面可以跟多个设置,如果访问的时候没有指定具体访问的资源,则会依次进行查找,找到第一个为止。

举例说明:

location /{
	root /usr/local/nginx/html;
	index index.html index.htm;}
访问该location的时候,可以通过 http://ip:port/,地址后面如果不添加任何内容,则默认依次访问index.html和index.htm,找到第一个来进行返回

error_page指令

error_page:设置网站的错误页面

语法

error_page code ... [=[response]] uri;

默认值

位置

http、server、location......

当出现对应的响应code后,如何来处理。

举例说明:

(1)可以指定具体跳转的地址

server {
	error_page 404 http://www.itcast.cn;}

(2)可以指定重定向地址

server{
	error_page 404/50x.html;
	error_page 500502503504/50x.html;
	location =/50x.html{
		root html;
	}}

(3)使用location的@符合完成错误信息展示

server{
	error_page 404@jump_to_error;
	location @jump_to_error{
		default_type text/plain;
		return404'Not Found Page...';
	}}

可选项=[response]的作用是用来将相应代码更改为另外一个

server{
	error_page 404=200/50x.html;
	location =/50x.html{
		root html;
	}}

这样的话,当返回404找不到对应的资源的时候,在浏览器上可以看到,最终返回的状态码是200,这块需要注意下,编写error_page后面的内容,404后面需要加空格,200前面不能加空格

Supongo que te gusta

Origin blog.csdn.net/Blue92120/article/details/129145697
Recomendado
Clasificación