配置项的格式:配置项名称 配置项值1 配置项值2 ···· ;
配置名称必须是nginx中的某一个模块能够处理的,否则nginx会出现非法配置名的错误
配置值中如果出现语法符号,例如空格、变量等,使用单引号或者双引号括起来
第一类:用于调试和定位问题的配置项
1.daemon on|off 默认是on
是否以守护进程方式允许
2.master_process on|off 默认on
是否以一个master进程和多个worker进程的方式允许,如果off则不会fork出多个worker,而是一个master执行所有的请求
3.error日志设置
error /var/log/nginx.error.log debug
第一个值是日志文件的路径,第二个值是日志等级,如果是debug模式,需要在在编译nginx时候使用了--with-debug选项才能使用,如果想要不输出任何日志,日志路径写成:/dev/null 即可
4.仅对指定的客户端输出debug级别的日志,该配置属于事件类配置,需要在events{}块配置中
debug_connection IP|CIDR
例如:
events{
debug_connection 10.244..66.14;
debug_connection 10.244..66.16;
}
上面的ip才会输出debug级别的日志,其他的ip请求都是沿用error_log配置的日志级别
第二类:正常运行配置项
1.全局配置:可能是配置指令,或者是花括号的块配置(例如所有的事件类配置必须在events{.....}中配置),主要的全局配置如下:
user 用户 用户组: 配置由master进程fork出来的worker进程的所属用户和用户组,如果省略了group则表示用户组使用与user同名的用户组
pid: 记录主进程Id的文件,必须确保nginx能够有权限在目标目录中创建修改该文件,该配置会覆盖编译nginx时候的设置(默认是在logs目录下)
worker_rlimit_nofile:设置一个worker进程可以打开的最大文件句柄数
worker_processes: worker进程启动的数量,这些进程用于处理用户的请求连接,该选项是一个优化关键项之一,每个worker进程都是单线程的进程,它会调用各个模块实现各种功能,如果这些模块不会出现阻塞式调用,该值设置成cpu内核数即可,否则设置的值应该稍大于cpu内核数,这样会出现过多的进程间的切换带来的消耗
worker_cpu_affinity: 绑定worker到每个指定cup内核中,该参数与worker_processes结合使用,为什么进行worker绑定内核?假设如果多个worker进程抢同一个cpu就会出现同步问题,如果绑定了,那么一个worker进程独享一个cpu,这就在内核的调度策略上实现了完全的并发
例如:
worker_processes:4;
worker_cpu_affinity:1000 0100 0010 0001;
2.事件类配置项,需要在events{}块中设置
accept_mutex on|off:nginx的负载均衡锁,该锁能够让每个worker轮流地序列化地与新的客户端建立tcp连接处理请求,原理是当某个worker进程处理请求数达到了worker_connections的7/8左右时候,锁会大大减少该进程处理请求的的机会,这样实现了所有worker在处理请求数的尽量接近均衡,默认是开启的
use: 选择事件模式,linux中可选择的事件类型:poll、select、epoll,其中epoll可处理高并发,性能最好
worker_connections: 配置一个进程能够处理的的最大并发连接数(也就是一个进程最多能同时处理多少个请求的意思,受限于内存,也受限于worker_rlimit_nofile,其值不能大于worker_rlimit_nofile的值,而worker_rlimit_nofile的值则受限于系统本身的最大打开文件句柄数,可使用ulimit -n查看),这是一个优化的关键项之一
2. 使用include文件
include可以用在配置文件中的任何地方,只要被include的文件复合nginx配置文件的格式,这样可以使得某些配置文件能够重复使用
3. http中的server部分的配置,该配置需要使用http{}来包含,一般都是在全局配置后设置
这部分的命令用于配置http的连接,该指令比较多,大体可分一下几类:
3.1 客户端指令,例如:keepalive_timeout
3.2 文件I/O指令 例如:open_file_cache
3.3 Hash指令
3.4 Socket指令
4. 虚拟server指令,任何有server开始的部分都视为“虚拟服务器”部分,其包含在server{}中,它描述是一组根据server_name指令逻辑分割的资源,这些虚拟服务器资源用于响应http的请求,
因此它包含在http中的server部分的配置中,也就是包含在http{}中(http{ server{...} }),
用http核心模块配置一个静态web服务器
1.主要的模块是ngx_http_core_module,配置需要在server块中,而server块需要在http块中
2.配置可大体分为8种:
2.1 虚拟机主机的请求与分发
监听端口:
listen ip:port | ip | port 各种参数
例如:
listen 8099 default_server deferred
参数:
default_server表示作为默认的server块(虚拟主机),如果一个请求无法匹配配置文件中的所有主机域名,就会选择默认的server块
deferred:设置该参数后,即使用户发起了连接请求,并且tcp已经三次握手了,nginx也不会发起worker进程来处理,只有当用户真正的发送请求数据时候(内核在网卡收到请求数据包),worker才会被唤起处理请求,有利于大并发的情况下
主机名:
server_name value1 value2 ....;
在处理http请求的时候,nginx会跟中请求中的host的值去匹配配置中的server块中的server_name,如果同时符合,则按照匹配度来决定
如果都没有匹配则会:选择listen中定义了default_server的,如果没有则直接选择第一个server块
server ""{...}表示匹配http请求中没有host值的这个请求
重定向location
配置块:server
location会根据请求中的url来匹配,匹配上就执行location中的配置,如果多个匹配,只会选择最后一个个匹配到的location
匹配原则:
1. = 表示完全匹配
location = / {
#当用户请求是/时候,才使用这里的配置
}
2. ~ 表示匹配url时候是大小写敏感的
3. ~* 表示匹配url时候大小写不敏感
location ~* \.(gif|jpg|png)$ {
#匹配以.gif 或者 .jpg 或者 .png结尾的请求(不区分大小写),这里使用了正则,
}
4. ^~
loacation ^~ /images/{
#匹配请求以/images/开头的
}
一个匹配所有请求的location:
location / {
#匹配所有的请求
}
2.2 文件路径的定义
root定义资源路径
配置块:http、server、location、if
例如:
location /download/ {
root /data/web/html/;
#表示当有请求,例如是/download/index/index.html,那么web服务器会返回/data/web/html/download/index/index.html的内容
}
访问首页
index file1 file2....;
配置块:http、server、location
当访问是/时候,表示访问首页,这index配置属于ngx_http_index_module模块,配置多个文件,会按照从左往右顺序访问
http错误码重定向:error_page
2.3内存及磁盘资源的分配
http包体只存到磁盘文件中:client_body_in_file_only on|off (默认off),都会存入磁盘文件中,只是如果设置成off,在请求结束后该文件会被删除
配置模块:http、server、location
http包体尽量写到一个内存buffer中
client_body_in_single_buffer on|off(默认off),如果请求的http包体大小超过 client_body_buffer_size的大小,则还是会写入磁盘文件中
配置块:http、server、location
存储http头部的内存buffer大小:client_header_buffer_size(默认1k,正常的http请求的,如果有过大的http请求,其大小的限制由large_client_header_buffers来决定)
配置块:http、server
存储超大http头部的内存buffer大小:large_client_header_buffers number size(默认是 4 8k)
配置块:http、server
2.4网络连接配置
对某些浏览器禁用keepalive功能:keepalive_disable msie safari (默认对ie6和safari浏览器禁用)
配置块:http、server、location
keepalive超时时间:keepalive 75 (默认75秒),一个keepalive连接在闲置超过了75秒后,服务器和浏览器都会去关闭该连接,这个时间只约束了nginx,而nginx会把该时间传递给浏览器
配置块:http、server、location
一个keepalive长连接上允许承载的最大请求数:keepalive_request 100(默认是100个),一个keepalive连接最多只能发送100个请求
配置块:http、server、location
2.5 MIME类型的设置
定义MIME type到文件扩展名的映射,同一个MIME type可使用不同的文件扩展名,用http请求中的Content-Type的值从该类型设置中找到对应的文件扩展名,如果找不到,默认是text/plain
type{
text/html html;
text/html conf;
image/jpeg jpg;
image/gif gif;
.....
}
配置块:http、server、location
2.6 对客户端请求的限制
http包体的最大值:client_max_body_size 1m(默认1m),该值用来限制http请求中Content-Length字段的值,如果一个请求的Content-Length为10GB,那么nginx在接收完包头,发现10GB已经超过client_max_body_size的值了,nginx直接返回413(Reqest Entity Too Large)状态给客户端
配置块:http、server、location
location ~ .+\.php($|/) {
#以下是fastcgi模块最基本的配置项
fastcgi_pass fzjh;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params; #fastcgi_params与文件fastcgi.conf的区别只在于fastcgi_param SCRIPT_FILENAME参数的定义而已
#或者是
#fastcgi_pass fzjh;
#fastcgi_index index.php;
#include fastcgi.conf;
}
相关推荐
Nginx 配置文件 nginx.conf 详解 Nginx 配置文件 nginx.conf 是 Nginx 服务器的核心配置文件,它控制着 Nginx 服务器的行为和性能。在这个配置文件中,我们可以设置服务器的用户和组、工作进程数、错误日志、进程...
nginx配置多个静态资源 本文将详细介绍nginx配置多个静态资源的知识点,从基本概念到配置实践,涵盖了nginx配置文件的各个组件和指令。 nginx配置文件结构 nginx配置文件主要由以下几个部分组成: * main块:...
Nginx配置文件(nginx.conf)配置详解 Nginx配置文件(nginx.conf)是Nginx服务器的核心配置文件,用于定义Nginx服务器的行为和配置。下面是Nginx配置文件的详细配置解释: 用户和组 Nginx配置文件中指定了用户和组,...
在IT行业中,项目打包运行和Nginx配置是两个关键环节,它们对于应用程序的部署和发布至关重要。这里我们将深入探讨这两个主题。 首先,项目打包运行通常指的是将开发完成的前端或后端应用转换为可部署的形式。对于...
在标题“notepad++编辑nginx配置文件支持高亮”中,我们关注的是如何在Notepad++中实现对Nginx配置文件的语法高亮显示,这将极大提升开发者的阅读和编写效率。 Nginx是一款高性能的HTTP和反向代理服务器,其配置...
设置监听地址和端口,与Nginx配置中的`fastcgi_pass`对应: ```ini listen = 127.0.0.1:9000 ``` 启动Nginx和PHP-FPM服务。如果一切配置无误,现在你应该可以通过浏览器访问`http://localhost/`并看到Nginz的欢迎...
- 对于负载均衡,可以通过在Nginx配置文件中定义多个后端服务器,并使用`proxy_pass`指令来实现。 ```nginx upstream backend { server backend1.example.com; server backend2.example.com; } server { ...
本教程将介绍一种方法,使得在Windows环境下,Nginx配置文件修改后能够自动加载并重启,以实现配置的即时生效。 首先,`nginx.conf`是Nginx的主要配置文件,它包含了服务器的各项设置,如监听端口、服务器块、反向...
3. **编辑Nginx配置文件**:找到Nginx的配置文件,通常是`/etc/nginx/nginx.conf`或`/usr/local/nginx/conf/nginx.conf`。添加一个新的`server`块,配置如下: ```nginx server { listen 80; listen 443 ssl; # ...
6. 反向代理配置:在nginx配置中,proxy_pass指令用于指定后端的服务器地址,这里指向了本地的8080端口。同时,还通过proxy_set_header指令设置了传递给后端服务器的HTTP头信息,如X-Forwarded-For(客户端IP地址)...
在部署 Vue 项目时,Nginx 配置文件 `nginx.conf` 的关键设置如下: 1. **基本配置**: - `server` 块:定义一个监听特定端口(通常是80)的服务器实例。 ```nginx server { listen 80; server_name your...
在Windows环境下,配置Nginx以支持HTTPS及在同一端口监听多个网站,即配置多个虚拟主机,是一项常见的网络服务设置任务。...同时,根据实际需求,还可以对Nginx配置进行更复杂的优化,如负载均衡、缓存等。
三、Nginx配置安全头 在上面的配置文件中,我们使用了add_header指令来添加Content-Security-Policy头,以便升级不安全的请求。这可以防止攻击者inject恶意脚本来攻击网站。 四、Nginx配置错误页面 在上面的配置...
1. **Nginx配置基础** Nginx的配置文件通常位于`/etc/nginx/`目录下,其中`nginx.conf`是主配置文件,它包含了整个Nginx服务器的基本设置。`conf.d`目录则用于存放多个独立的配置片段,这种方式使得配置管理更加...
总结一下,"squid和nginx配置正向代理访问API接口"涉及的关键知识点包括正向代理的概念、Squid和Nginx的代理功能、配置这两者的步骤、以及安全性控制和优化策略。正确配置和使用这两个工具可以帮助企业构建高效、...
本文将深入探讨如何通过Nginx配置文件来设置一级域名和二级域名,以及如何利用Nginx的反向代理功能。 首先,了解一级域名和二级域名的概念至关重要。一级域名是互联网上顶级的域名,如.com、.org、.net等。二级域名...
Nginx配置多个service 多个访问路径 找到conf/nginx.conf修改配置文件 #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid ...