一、nginx配置

简介: 一、nginx配置

一、nginx配置

  1. 配置简介

1)nginx相关目录

工作目录:/etc/nginx

执行文件:/usr/sbin/nginx

日志目录:/var/log/nginx

启动文件:/etc/init.d/nginx

web目录:/var/www/html/,首页文件是index.nginx-debian.html

2)nginx配置文件

默认文件:

/etc/nginx/nginx.conf

其他目录:

/etc/nginx/{sites-enabled/conf.d}

文件结构:

全局配置段

http配置段

server配置段 # 项目或者应用

location配置段 # url配置

  1. nginx访问过程原理
  2. nginx配置详解
    3.1 全局配置段
    主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:

user # 设置使用用户(worker)

worker_processes # 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个

pid # nginx服务启动时候pid

events # 定义事件相关的属性

worker_connections # 一个进程允许处理的最大连接数

use # 定义使用的内核模型

3.2 http配置段

主要配置server通用的一些配置:

include mime.types; # 文件扩展名与文件类型映射表

default_type application/octet-stream; # 默认文件类型

sendfile on; # 开启高效文件传输模式。

autoindex on; # 开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on; # 防止网络阻塞

tcp_nodelay on; # 防止网络阻塞

keepalive_timeout 120; # 长连接超时时间,单位是秒

gzip on; # 开启gzip压缩输出

3.3 server配置段

常见样式:

server {

listen :;

server_name <主机域名>;

}

注:server配置段最重要的属性是listen和server_name,它们都是用于匹配并处理请求的。

1)listen属性

作用:定义server监听的ip和port,当ip和port匹配时候才进行下一步匹配。

ip:port 地址精确表示样式 listen 10.10.10.10:99 listen 10.10.10.10:99

ip 自动监听 ip:80地址 listen 10.10.10.10 listen 10.10.10.10:80

port 自动监听 全地址:port listen 99或 [::]:99 listen 0.0.0.0:99

default_server 自动使用默认的地址 listen default_server listen localhost:80

使用原则:

首先将所有样式补全成ip:port,然后匹配,如果匹配server多,那么接着使用server_name匹配。

2)server_name属性

作用:定义server监听的域名,当域名匹配时候才进行下一步操作。

形式 www.example.com .example.com www.example. _

使用原则:

优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则。 非法域名/IP,表示请求到该主机上一个不存在的IP或者域名。

3)root属性

作用:定义客户端请求的html文件所在目录路径。

表现形式:root /var/www/html;

4)index属性

作用:定义客户端请求时默认返回的文件。

表现形式:index index.html index.htm index.nginx-debian.html;

3.4 location配置段

location主要是根据server匹配到的请求路径去处理和响应。

前提: 根据请求完整url,获取uri(即:除了域名(IP)、Port和路径参数之外的部分),用于location匹配。

语法:

location optional_modifier location_match {

# 执行操作…

}

其中:optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作。

1)匹配规则

= /路径 精确匹配 前缀 1 location = /image {}

^~ 优先匹配 前缀 2 location ^~ /page {}

~ 普通正则-大小写敏感 正则符号 3 location ~ .(jpe?g)$ {}

~* 普通正则-大小写不敏感 正则符号 3 location ~* .(jpe?g)$ {}

空 / 通用匹配 前缀 4 location / {}

空 <路径> 前缀匹配 前缀 * location /index {}

2)匹配优先级

优先级:精确匹配>location 完整路径>优先匹配>正则匹配>location 部分路径>通用匹配

3)匹配示例

location = / { location ~ .(gif|jpg|png|js|css)$ {

#精确规则A #正则规则D

} }

location = /login { location ~* .png$ {

#精确规则B #正则规则E

} }

location ^~ /static/ { location / {

#优先规则C #通用规则F

} }

访问效果如下:

访问 http://a.com/ 将匹配规则A

访问 http://a.com/login 将匹配规则B

访问 http://a.com/static/a.html 将匹配规则C

访问 http://a.com/b.png 规则D和E均适合,按顺序优先使用规则D

访问 http://a.com/static/c.png 则优先匹配到规则C

访问 http://a.com/a.PNG 则匹配规则E,因为规则E不区分大小写

访问 http://a.com/category/id/1111 则最终匹配到规则F

3.5 location核心动作

Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

1)指令语法

try_files file … uri

try_files file … =code

作用:响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)。

2)常见示例

如果能找到指定的uri那么就返回相应的内容,否则的话返回错误状态码404

location / {

try_files $uri $uri/ =404;

}

如果能找到指定的文件1/2.html那么就返回相应的内容,否则的话返回6.html文件内容

location / {

try_files 1.html 2.html /6.html;

}

如果能找到指定的uri那么就返回相应的内容,否则的话就内部重定向到后端名称为@backup的location

location / {

try_files $uri @backup;

}

location @backup {

# …do something

}

注意:如果最后一个地址是一个uri的话,那么这个uri必须是存在的,否则的话就出事了。

3.6 location常见操作

在location内部常用的功能属性非常多,常见的基本属性、临时跳转、目录列表等。

1)基本属性

location / {

# 指定响应请求的文件所在路径

root /var/www/html;

# 指定响应请求的默认文件名称

index index.php index.html index.htm;

# 指定响应请求的文件浏览器缓存过期时间,一般用于静态文件

expires 7d;

# 如果root指定的路径下有查找的文件,就返回,否则报404

try_files $uri $uri/ =404;

}

2)临时跳转

location = /test/ {

return 302 http://www.itcast.cn/;

}

3)目录列表

location /upload {

# 指定查看文件列表路径(绝对路径)

alias /var/www/upload/;

# 开启目录自动索引

autoindex on;

# 默认on,显示文件确切大小(bytes)。off表示显示文件的大概大小(kB/MB/…)

autoindex_exact_size off;

# 默认off,显示的文件时间为GMT时间。on表示显示文件的服务器时间

autoindex_localtime on;

}

注:alias路径结尾必须加/。

3.7 其他说明

1)root VS alias

root 和 alias 所起的作用都是指定响应请求文件所在的路径,只是它们有区别。

root 表示 location 匹配内容的相对路径

alias 表示 一个绝对路径。

一般情况下,在location /中配置root,在location /other中配置alias。

效果一: 效果二:

location /txt/ { location /txt/ {

alias /var/www/txt/; root /var/www/txt/;

} }

效果一:访问http://localhost/txt/1.txt,nginx找/var/www/txt/1.txt文件

效果二:访问http://localhost/txt/1.txt,nginx找/var/www/txt/txt/1.txt文件

2)关于URL尾部的/有如下注意事项

  • location中的location_match字符有无"/"不受影响,/user/等同/user。
  • 对于访问网站域名(http://www.smartli.cn/),尾部有无"/“不受影响,因为浏览器会自动补全”/"。
  • 对于访问网站域名后面的路径(http://www.smartli.cn/other/),尾部的"/“很重要。
    访问URL尾部的”/“表示目录,没有”/"表示文件,而且文件找不到的话,会发生重定向。
  • /other/:表示服务器会自动去该目录下找对应的默认文件。
  • /other:表示服务器会先去找other文件,找不到的话会将other当成目录,重定向到/other/,去该
    目录下找默认文件。
    总结:

配置文件结构:全局配置段、http配置段、server配置段、location配置段

server配置段

listen:server监听的ip和port

server_name:server的域名

location配置段

匹配优先级:精确匹配>location 完整地址>优先匹配>正则匹配>location 部分地址>通用匹配

root和alias

root:相对目录

alias:绝对目录

相关文章
|
3月前
|
编解码 应用服务中间件 Linux
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
centos配置nginx-rtmp实现ffmpeg转码rtsp为rtmp视频流
316 1
|
7月前
|
应用服务中间件 Linux 网络安全
Centos 8.0中Nginx配置文件和https正书添加配置
这是一份Nginx配置文件,包含HTTP与HTTPS服务设置。主要功能如下:1) 将HTTP(80端口)请求重定向至HTTPS(443端口),增强安全性;2) 配置SSL证书,支持TLSv1.1至TLSv1.3协议;3) 使用uWSGI与后端应用通信(如Django);4) 静态文件托管路径设为`/root/code/static/`;5) 定制错误页面(404、50x)。适用于Web应用部署场景。
725 87
|
7月前
|
负载均衡 应用服务中间件 nginx
Nginx配置与命令
Nginx 是一款高性能的 HTTP 和反向代理服务器,其配置文件灵活且功能强大。本文介绍了 Nginx 配置的基础结构和常用指令,包括全局块、Events 块、HTTP 块及 Server 块的配置方法,以及静态资源服务、反向代理、负载均衡、HTTPS 和 URL 重写等功能实现。此外,还提供了常用的 Nginx 命令操作,如启动、停止、重载配置和日志管理等,帮助用户高效管理和优化服务器性能。
|
3月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
266 18
|
3月前
|
Ubuntu 安全 应用服务中间件
详细指南:配置Nginx服务器在Ubuntu平台上
以上步骤涵盖了基本流程:从软件包管理器获取 Ngnix, 设置系统服务, 调整UFW规则, 创建并激活服务器块(也称作虚拟主机), 并进行了初步优化与加固措施。这些操作都是建立在命令行界面上,并假设用户具有必要权限(通常是root用户)来执行这些命令。每个操作都有其特定原因:例如,设置开机启动确保了即使重启后也能自动运行 Ngnix;而编辑server block则定义了如何处理进入特定域名请求等等。
330 17
|
4月前
|
数据建模 应用服务中间件 PHP
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
本示例演示如何通过Docker挂载同一宿主目录至Nginx与PHP容器,实现PHP项目运行环境配置。需注意PHP容器中监听地址修改为0.0.0.0:9000,并调整Nginx配置中fastcgi_pass指向正确的IP与端口。同时确保Nginx容器中/var/www/html权限正确,以避免访问问题。
配置nginx容器和php容器协同工作成功,使用ip加端口的方式进行通信
|
5月前
|
应用服务中间件 网络安全 nginx
配置Nginx以支持Websocket连接的方法。
通过上述配置,Nginx将能够理解WebSocket协议的特殊要求,代理Websocket流量到合适的后端服务器。注意,Websocket并不是HTTP,尽管它最初是通过HTTP请求启动的连接升级,因此保证Nginx了解并能够妥善处理这种升级流程是关键。
1114 10
|
4月前
|
Ubuntu 应用服务中间件 Linux
在Ubuntu上配置Nginx实现开机自启功能
至此,Nginx应该已经被正确地设置为开机自启。在Ubuntu中利用 `systemd`对服务进行管理是一种高效的方式,为系统管理员提供了强大的服务管理能力,包括但不限于启动、停止、重启服务,以及配置服务的开机自启动。通过这些简洁的命令,即使是对Linux不太熟悉的用户也能轻松地进行配置。
182 0
|
6月前
|
安全 应用服务中间件 网络安全
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
373 0
Nginx SSL/TLS协议栈中配置深度解析与实践指南-优雅草卓伊凡
|
6月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
254 3