Nginx:配置文件详解

一、Nginx配置文件

main配置段:全局配置

events段:定义event工作模式

http {}:定义http协议配置

支持使用变量:
        内置变量:模块会提供内建变脸定义
        自定义变量:set var_name value

二、 主配置段的指令

1、正常运行的必备配置

1、user USERNAME [GROUPNAME];            #指定运行worker进程的用户 和组,例如:user nginx nginx;

2、pid /path/to/pid_file;        #指定nginx的pid文件;

3、worker_rlimit_nofile;        #指定一个worker进程所能够打开的最大文件句柄数;

4、worker_rlimit_sigpending;         #指定每个用户能够发往worker的信号的数量;

2、优化性能相关的配置

1、worker_processes #:          #worker线程的个数;通常应该为物理CPU核心个数减1;

2、worker_cpu_affinity cpumask ...;

  •                     
  •                   CPUMASK
  •                         0001
  •                         0010
  •                         0100
  •                         1000 
  •                     例如: worker_cpu_affinity 00000001 00000010 00000100;

3、timer_resolution t ;           #  计时器解析度,降低此值,柯减少gettimeofday()系统调用次数

4、worker_priority nice;         #对应的nice值-20 - 19,优先级对应100-139

3、事件相关的配置

1、pt_mutex {on|off} ;        (互斥锁)内部调用用户 请求至各worker时用的负载均衡锁;on时表示能让多个worker轮流地、序列化地与响应新请求;

2、lock_file /path/to/lock_file ;         #accept_mutex用到的锁文件

3、accept_mutex_delay #ms;        #work进程繁忙时锁等待多长事件

4、use [epoll|rgsig|select|poll];;        #定义使用的事件模型;建议让Nginx自动选择;

5、worker_connections;        #每个worker进程所能够响应的最大并发请求数;

4、用于调试 

1、daemon {off|on};        #是否以守护进程的方式运行nginx,调试时应该设置为off

2、master_process {on|off};        #是否以master/worker模型来运行nginx

3、error_log /path/to/error_log level;        #错误日志文件及其级别;处于调试目的,可以使用debug级别,但此级别只有在编译nginx时手机用--with-debug选项才有效; 

三、Nginx作为Web服务器使用配置

http{}:由ngx_http_core_module模块来引入
配置格式

http配置:http core 配置一个静态web服务器ngx_http_core_module配置框架:http {upstream {.,..}server {listen IP:PORT;# 虚拟主机location /URL {root "/path/to/dir"……if ...{...}}}     #每个Srever类似于httpd中的<VirtualHost>server {……}}#注意:与httpd相关的指令仅能通够放置于http、server、location、upstream、if上下文指令仅应用于这5中上下文

 四、虚拟主机配置相关指令

1、server{}  定义一个虚拟主机

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​

访问:

2、listen 监听端口

完整格式:listen address[:port] [default_server] ssl 
  backlog=number: 指明TCP协议backlog队列的大小。默认为-1,表示不设置;
  rcvbuf=size:设定监听句柄的SO_RCVBUF参数;

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​

3、server_name 主机名

​server{listen 8080;server_name www.hongyang.com;root "/vhosts/web1";}​
#				(1) 先做精确匹配;www.hongyang.com: 
#				(2) 左侧通配符匹配,例如:*.hongyang.com; 
#				(3) 右侧通配符匹配,例如:www.*;
#				(4) 正则表达式匹配,例如: ~^.*\.hongyang\.com$
#				(5) default_server

4、root  Path 设置资源路径映射

root:用于指明请求的URL所对应的文档的根目录路径

	location /imag/ {root "/web/imgs/";}

5、location 根据用户请求的URL匹配定义的location

允许根据用户请求的URI来匹配定义的各location,匹配到时,此请求将被相应的location块中的配置所处理;

#					=: 精确匹配检查;
#					~: 正则表达式模式匹配,区分字符大小写;
#					~*:正则表达式模式 匹配,不区分字符大小写;
#					^~:URI的前半部分匹配,不检查正则表达式;匹配优先级:精确匹配(=)、^~、~和~*、由不带符号的URL进行左侧匹配;

6、aliias path 用于配置段,定义路径别名

	location /imags/ {root "/web/imgs/";}#访问上面的地址就相当于访问# http://www.hongyang.com/imags/a.jpg --> /vhosts/web/images/a.jpglocation /imags/ {alias /www/pictures/;}# http://www.hongyang.com/imags/a.jpg --> /www/pictures/a.jpg#     注意:root表示指明路径为对应location的“ /” URL;alias表示路径映射,即location中的URL是相对于alias所指明的路径而言;

7、index 默认页面配置

location / {index  index.html index.htm;}# 当index.html 没有影响的时候,就会用index.htm来响应

8、err_page  根据http状态码重定向错误页面

location{error_page  404   /404.html}# 当index.html 没有影响的时候,就会用index.htm来响应
# =[code]: 以指定的响应码进行响应;省略code表示以新资源的响应码为响应码;location{error_page  404 = 200  /404.html}

9、基于IP访问控制

  server{listen 8080;server_name www.hongyang.com;location{root "/vhosts/web1";# deny all;allow 192.158.5.128/16;}}# deny禁止哪些IP进行访问:格式 IP/Network
# allow允许哪些IP进行访问    格式 IP/NetWork

10、基于用户的访问控制

    server{listen 8080;server_name www.hongyang.com;location /  {root "/vhosts/web1";auth_basic "Only For VIP"auth_basic_user_file /app/nginx/users/.htpasswd;}}# 自己生成密钥 需要安装htttpd
# htpasswd -c -m /app/nginx/users/.htpasswd tom

效果

11、SSL配置

#生成私钥->生成CA证书
# cd /etc/pki/CA
# (umask 077; openssl genrsa -out private/cakey.pem 2048)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3655
# touch serial index.txt
# echo 01 > serial#生成Nginx私钥
# (umask 077; openssl genrsa -out nginx.key 1024)
# openssl req -new -key nginx.key -out nginx.csr#使用CA证书签署
# openssl ca -in nginx.csr -out nginx.crt -days 3655server {listen       443 ssl;server_name  wwww.hongyang.com;ssl_certificate      /app/nginx/ssl/nginx.crt;ssl_certificate_key  /app/nginx/ssl/nginx.key;ssl_session_cache    shared:SSL:1m;  #会话中缓存放在什么位置,使用多大内存ssl_session_timeout  5m;                #超时时间ssl_ciphers  HIGH:!aNULL:!MD5; #使用那种加密方式ssl_prefer_server_ciphers  on;指定使用 SSLv3 和 TLS 协议时,服务器密码应优先于客户端密码。location / {root "/vhosts/web1";}}}



Chrom浏览器导入nginx.crt证书后访问

12、stub_status 状态页

        location /status  {stub_status on;allow 192.168.0.0/16deny all;}}#仅能用于location 中Active connections: 2   # 当前所有处于打开状态的连接数
server accepts handled requests65 65 64 
#1、已经连接的连接数
#2、已经处理过的连接数
#3、已经处理过的请求数;在“保持连接”模式下,请求数量可能会多于连接数量Reading: 0 Writing: 1 Waiting: 1
# Reading 正处于接收请求状态的连接数
# Writing 请求已经接收完成,正处于处理请求活发送响应的过程中的连接数
# Waiting 保持连接模式下,且处于活动状态的连接数


13、rewrite regex replacement flag URL重写标志

# rewirte ^/images/(.*\.jgp)$ /imgs/$1 break;
# 相当于访问:http://www.hongyang.com/imges/a/b/c/1.jpg --> http://www.hongyang.com/imgs/a/b/c/1.jpg# flag
# last:一旦此rewrite规则重写完成后,就不再被后面其他的rewrite规则进行处理,而是由User_Agent重新对重写后的URL再一次发起请求,并从头开始执行类似的过程
# break:一旦此rewrite规则重写完成后,由User_Agent对新的URL重新发起请求,且不在会被当前locationg内的任何rewrite规则所检查
# redirect:以302响应码(临时重定向)返回新的URL
# permanent: 以301响应码(永久重定向)返回新的URLlocation /  {root "/vhosts/web1";rewrite ^/bbs/(.*)$ /forum/$1 break;rewrite ^/bbs/(.*)$ https://www.hongyang.com/index.html redirect;}

14、if 上下文

# 语法 if (condition) {}
# 应用环境:server , location# condition
# 1、变量名:变量值为空串,或者以“0” 开始,则为false; 其他的均为true
# 2、以变量为操作数构成的比较表达式可使用=(等于)、!=(不等于)类似的比较操作符进行测试
# 3、正则表达式的模式匹配检查~:区分大小写的模式匹配检查~*:不区分大小写的模式匹配检查!~和!~*:对上面两种的取反
# 4、测试路径为文件可能性:-f和!-f
# 5、测试指定路径为目录的可能性:-d, !-d
# 6、测试文件的存在性:-e, !-e
# 7、检查文件是否有执行权限:x, !-xif ($http_user_agent ~* MSIE) {rewrite ^(.*)$ /mise/$1 break;    
}

15、防盗链

# refere 模块提供invalid_referer(不合法的)变量,valid_referer(合法的)
location ~* \.(jpg|gif|jpeg|png)$ {valid_referer none blocked www.hongyang.comif ($invalid_referer) {rewirte ^/ http://www.hongyang.com/403.html}}

16、定制访问日志格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;# 此处可用变量为nginx各模块内建变量

五、网络相关的配置

1、eepalive_timeout time;     #保持连接的超时时长,默认为75s;
2、keepalive_requests;     #在一次保持连接上允许承载最大资源请求数;
3、keepalive_disable [msie6|safari|none];   #为指定类型的浏览器禁用长连接;
4、tcp_nodelay on|off;    #对长连接是否使用TCP_NODELAY选项;(TCP开销比较大,所以TCP在拥塞算法上对开销较小的请求合并成一次请求,延迟响应)
5、client_header_timeout time;    #读取http请求报文首部的超时时长;
6、client_body_timeout time;    #读取http请求报文body部分的超时时长;
7、send_timeout time;    #发送响应报文的超时时长;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/219018.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【深度学习笔记】04 概率论基础

04 概率论基础 概率论公理联合概率条件概率贝叶斯定理边际化独立性期望和方差模拟投掷骰子的概率随投掷次数增加的变化 概率论公理 概率&#xff08;probability&#xff09;可以被认为是将集合映射到真实值的函数。 在给定的样本空间 S \mathcal{S} S中&#xff0c;事件 A \m…

人工智能时代的内容写作

内容不再只是王道&#xff0c;正如俗话所说&#xff1a;它是一种流动的货币&#xff0c;推动了巨大的在线信息和影响力经济。 每个品牌都是一个故事&#xff0c;通过其服务和商品讲述自己。尽管如此&#xff0c;大多数客户还是会通过您的在线内容最了解您。 但随着我们进入人…

常见树种(贵州省):016杜鹃、含笑、桃金娘、金丝桃、珍珠花、观光木

摘要&#xff1a;本专栏树种介绍图片来源于PPBC中国植物图像库&#xff08;下附网址&#xff09;&#xff0c;本文整理仅做交流学习使用&#xff0c;同时便于查找&#xff0c;如有侵权请联系删除。 图片网址&#xff1a;PPBC中国植物图像库——最大的植物分类图片库 一、杜鹃 …

武汉数字孪生赋能工业制造,加速推进制造业数字化转型

随着数字孪生技术的不断推进&#xff0c;互联网、物联网、智能传感技术开始应用到数控机床的远程服务&#xff0c;状态监控&#xff0c;故障诊断&#xff0c;维护管理等方面。武汉数字孪生是在虚拟空间中创建物理对象的高保真虚拟模型&#xff0c;以模拟其在现实世界中的行为提…

Java核心知识点整理大全15-笔记

Java核心知识点整理大全-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全2-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全3-笔记_希斯奎的博客-CSDN博客 Java核心知识点整理大全4-笔记-CSDN博客 Java核心知识点整理大全5-笔记-CSDN博客 Java核心知识点整理大全6…

靡靡之音 天籁之声 ——Adobe Audition

上一期讲到了和Pr配合使用的字幕插件Arctime Pro的相关介绍。相信还记得的小伙伴应该记得我还提到过一个软件叫做Au。 当人们对字幕需求的逐渐满足&#xff0c;我们便开始追求更高层次的享受&#xff0c;当视觉享受在进步&#xff0c;听觉享受想必也不能被落下&#xff01; Au即…

使用skforecast进行时间序列预测

时间序列预测是数据科学和商业分析中基于历史数据预测未来价值的一项重要技术。它有着广泛的应用&#xff0c;从需求规划、销售预测到计量经济分析。由于Python的多功能性和专业库的可用性&#xff0c;它已经成为一种流行的预测编程语言。其中一个为时间序列预测任务量身定制的…

2023年3月电子学会青少年软件编程 Python编程等级考试一级真题解析(判断题)

2023年3月Python编程等级考试一级真题解析 判断题(共10题,每题2分,共20分) 26、在Python编程中,print的功能是将print()小括号的内容输出到控制台,比如:在Python Shell中输入print(北京,你好)指令,小括号内容可以输出到控制台 答案:错 考点分析:考查python中print…

《微信小程序开发从入门到实战》学习三十一

3.4 开发参与投票页面 3.4.9 显示投票结果 在实际使用中&#xff0c;一个用户不能对同一个投票进行重复提交&#xff0c;因此需要向服务器端提交投票结果和提交用户ID。另外页面&#xff0c;需要完善。用户提交完投票后 &#xff0c;还需要显示投票目前的结果&#xff0c;提交…

python 基于opencv和face_recognition的人脸识别

python 基于opencv和face_recognition的人脸识别 代码如下&#xff1a; 使用一个photos存放你需要识别的照片&#xff0c;注意一个人一张就行 然后通过下面代码注册用户&#xff0c;之后启动程序&#xff0c;就会调用摄像头进行识别了。 AddPhoto(“发哥”, “./photos/fag…

Docker Swarm总结+CI/CD Devops、gitlab、sonarqube以及harbor的安装集成配置(3/4)

博主介绍&#xff1a;Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 &#x1f345;文末获取源码下载地址&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb;…

面向对象的三大特征

目录 封装&#xff08;Encapsulation&#xff09;&#xff1a; 继承&#xff08;Inheritance&#xff09;&#xff1a; 多态&#xff08;Polymorphism&#xff09;&#xff1a; 封装&#xff08;Encapsulation&#xff09;&#xff1a; 定义&#xff1a; 封装是将对象的状态…