一.前述

之前讲解了Nginx的源码安装与加载到系统服务中去,http://www.cnblogs.com/LHWorldBlog/p/8298226.html 今天详细讲解Nginx中的具体配置。

二.具体配置

#工作模式与连接数上限
events
{
#参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。
use epoll;
#单个进程最大连接数(最大连接数=连接数*进程数)
worker_connections 65535;
}
event下的一些配置及其意义
 #单个后台worker process进程的最大并发链接数    
    worker_connections  1024;
    # 并发总数是 worker_processes 和 worker_connections 的乘积
    # 即 max_clients = worker_processes * worker_connections
    # 在设置了反向代理的情况下,max_clients = worker_processes * worker_connections / 4  为什么
    # 为什么上面反向代理要除以4,应该说是一个经验值
    # 根据以上条件,正常情况下的Nginx Server可以应付的最大连接数为:4 * 8000 = 32000
    # worker_connections 值的设置跟物理内存大小有关
    # 因为并发受IO约束,max_clients的值须小于系统可以打开的最大文件数(小与句柄数)

# 而系统可以打开的最大文件数和内存大小成正比,一般1GB内存的机器上可以打开的文件数大约是10万左右
    # 我们来看看360M内存的VPS可以打开的文件句柄数是多少:
    # $ cat /proc/sys/fs/file-max
    # 输出 34336
    # 32000 < 34336,即并发连接总数小于系统可以打开的文件句柄总数,这样就在操作系统可以承受的范围之内
    # 所以,worker_connections 的值需根据 worker_processes 进程数目和系统可以打开的最大文件总数进行适当地进行设置
    # 使得并发总数小于操作系统可以打开的最大文件数目
    # 其实质也就是根据主机的物理CPU和内存进行配置
    # 当然,理论上的并发总数可能会和实际有所偏差,因为主机还有其他的工作进程需要消耗系统资源。
    # ulimit -SHn 65535
nginx.conf配置文件
#定义Nginx运行的用户和用户组
user www www;

#nginx进程数,建议设置为等于CPU总核心数。
worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /var/log/nginx/error.log info;

#进程文件
pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。
worker_rlimit_nofile 65535;

#设定http服务器
http
{
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
#charset utf-8; #默认编码
server_names_hash_bucket_size 128; #服务器名字的hash表大小
client_header_buffer_size 32k; #上传文件大小限制
large_client_header_buffers 4 64k; #设定请求缓
client_max_body_size 8m; #设定请求缓
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。send file  高清图片 大图片 要关闭
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒

#gzip模块设置gzip on;(节省带宽)

#开启gzip压缩输出gzip_min_length 1k; #最小压缩文件大小gzip_buffers 4 16k; #压缩缓冲区gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)gzip_comp_level 2; #压缩等级gzip_types text/plain application/x-javascript text/css application/xml;#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。gzip_vary on;#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

# 虚拟主机一些配置及其意义

通过nginx可以实现虚拟主机的配置,nginx支持三种类型的虚拟主机配置,
1、基于ip的虚拟主机, (一块主机绑定多个ip地址)
2、基于域名的虚拟主机(servername)
3、基于端口的虚拟主机(listen如果不写ip端口模式)
示例基于虚拟机ip的配置,这里需要配置多个ip
server
{
    listen 192.168.20.20:80;
    server_name www.linuxidc.com;
    root /data/www;
}
server
{
    listen 192.168.20.21:80;
    server_name www.linuxidc.com;
    root /data/www;
}

nginx.conf下的配置
http{
server{
    #表示一个虚拟主机
}
}
#location 映射(ngx_http_core_module)

location [ = | ~ | ~* | ^~ ] uri { ... }
    location URI {}:
        对当前路径及子路径下的所有对象都生效;
    location = URI {}: 注意URL最好为具体路径。
        精确匹配指定的路径,不包括子路径,因此,只对当前资源生效;
    location ~ URI {}:
    location ~* URI {}:
        模式匹配URI,此处的URI可使用正则表达式,~区分字符大小写,~*不区分字符大小写;
    location ^~ URI {}:
        不使用正则表达式
    优先级:= > ^~ > ~|~* >  /|/dir/

/loghaha.html
/logheihei.html
^/log.*html$

#location匹配规则

=前缀的指令严格匹配这个查询。如果找到,停止搜索。
所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
正则表达式,在配置文件中定义的顺序。
如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用

location 的执行逻辑跟 location 的编辑顺序无关。矫正:这句话不全对,“普通 location ”的匹配规则是“最大前缀”,因此“普通 location ”的确与 location 编辑顺序无关;

但是“正则 location ”的匹配规则是“顺序匹配,且只要匹配到第一个就停止后面的匹配”;
“普通location ”与“正则 location ”之间的匹配顺序是?先匹配普通 location ,再“考虑”匹配正则 location 。
注意这里的“考虑”是“可能”的意思,也就是说匹配完“普通 location ”后,有的时候需要继续匹配“正则 location ”,有的时候则不需要继续匹配“正则 location ”。两种情况下,不需要继续匹配正则 location :
( 1 )当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普通 location 一旦匹配上,则不需要继续正则匹配;
( 2 )当普通location 恰好严格匹配上,不是最大前缀匹配,则不再继续匹配正则

loghaha.html
l:  logha
l:  ^~ loghah
l:  loghaha.html
l:  =loghaha.html
l:   ^logh.*html$
l:   ^logha.*html$

#执行逻辑(!!!)

nginx  收到请求头:判定ip,port,hosts决定server
nginx location匹配:用客户端的uri匹配location的uri
先普通
顺序无关
最大前缀
匹配规则简单
打断:
^~
完全匹配
再正则
不完全匹配
正则特殊性:一条URI可以和多条location匹配上
有顺序的
先匹配,先应用,即时退出匹配

ps: location中的    / 跟
html: 相对于nginx目录(默认是找寻Nginx中的当前HTML目录)

ps1 :(反向代理理解)

通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

PS2:总结

=绝对匹配
~* 正则匹配
\.把点转义
/最大前缀匹配
·~最大前缀匹配
先找不是正则的 然后找正则的 先匹配先应用
host:决策server负责处理
uri:决策location
反向代理:proxy_pass  ip:port[uri];
proxy_pass 反向代理
不带斜线:将uri透传过去
带斜线:访问反向代理的主页 将URI屏蔽掉

配置负载均衡(反向代理)!!!!!
upstream  httpd-servers {
}
httpd-servers upstreams 名字


PS3.修改默认HTML目录

server {listen       80;server_name  localhost;#charset koi8-r;#access_log  /var/log/nginx/log/host.access.log  main;  location / { root   /usr/share/nginx/html;index  index.html index.htm;}#error_page  404              /404.html;

默认路径为/usr/share/nginx/html 修改完后的目录为 /usr/share/alsa/pcm/default.conf。

修改nginx目录报错403解决办法

刚好我就遇到了,一查发现是权限不足引起;

chmod -R 755 /usr/share/nginx/html

将web目录设置为755权限,-R表示向下递归

chown -R nginx_user:nginx_user   /usr/share/nginx/html

转载于:https://www.cnblogs.com/LHWorldBlog/p/8305737.html

Nginx篇--解读nginx配置相关推荐

  1. Linux深入篇之一:配置Nginx Web服务器及多域名主机

    Linux深入篇之一:配置Nginx Web服务器及多域名主机 一.Nginx简介 nginx [engine x]是Igor Sysoev编写的一个HTTP和反向代理服务器,另外它也可以作为邮件代理 ...

  2. Nginx常用使用解读及配置

    概述 什么是 Nginx? Nginx (engine x) 是一款轻量级的 Web 服务器 .反向代理服务器及电子邮件(IMAP/POP3)代理服务器. 什么是反向代理? 反向代理(Reverse ...

  3. 入门学习Nginx代理服务器?就看这篇Nginx进阶学习最佳配置实践指南

    前置基础知识学习 1.Nginx基础安装与配置详细 https://blog.weiyigeek.top/2019/9-1-121.html 2.Nginx进阶学习之最佳配置实践指南 https:// ...

  4. 【实用篇】Nginx的配置文件以及案例详细配置实现

    [实用篇]Nginx的配置文件以及案例配置实现 一.nginx 的配置文件 二.配置实例-反向代理 反向代理实例 1 反向代理实例 2 补充:关于 location 指令的说明 三.配置实例-负载均衡 ...

  5. 【Nginx探究系列二】Nginx配置篇之客户Nginx白名单访问配置

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 在通常情况下,使用 nginx 基于 ip 限制访问请求频率等限制内容,我们会需要对特定ip进行限制排除操作,因此本 ...

  6. Nginx篇01-基本安装配置和静态页面设置

    nginx的编译安装.添加模块.yum安装.简单配置.默认目录作用和静态页面配置. 0.编译安装nginx 0.1 准备工作 这里我们使用nginx的mainline版本的1.17.9来进行编译安装, ...

  7. ant centos环境下 编译没有将配置文件加载_你可能忽略的macOS下brew安装nginx细节解读,干货

    大家好,我是路程lucky,热爱开发.设计.学习.生活.爱捣鼓的web前后端工程师,为您带来原创文章,欢迎持续关注~ 今天我们聊一聊macOS下的brew安装nginx,本文重点关注的是安装的细节的解 ...

  8. nginx的限流配置

    本文来说下nginx的限流配置 文章目录 概述 Nginx如何限流 配置基本的限流 处理突发 无延迟的排队 高级配置示例 location包含多limit_req指令 配置相关功能 发送到客户端的错误 ...

  9. nginx php 书籍,详细介绍Nginx下ThinkPHP5的配置方法

    Nginx下ThinkPHP5的配置方法详解 本文主要给大家介绍了关于Nginx下ThinkPHP5的配置方法,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: url里public目录的 ...

最新文章

  1. 企业网络推广浅析外包企业网络推广如何有效布局关键词优化?
  2. Linux中文件上传使用rz
  3. 概述nodejs核心机制
  4. 良性计算机病毒对计算有没有危害机系统,154、计算机病毒有良性和恶性之分,其中, – 手机爱问...
  5. 图片格式之YUV420 转RGB格式(含代码)
  6. 视图与URLconf
  7. Vivado生成bit文件报错彻底解决
  8. SpringBoot2.1.5(16)--- Spring Boot的日志详解
  9. 用JAVA FX制作3D魔方游戏
  10. java大数据开发工程师,面试题附答案
  11. 荷兰国旗问题python_荷是什么意思 荷字五行属什么
  12. .net core添加word水印
  13. 华东、华北、华南的城市
  14. Leetcode 006. Z 字形变换 | 每日一题
  15. xe android 摄像头,玩就要出彩 佳明VIRB XE运动摄像机评测
  16. Nexus 7 二代 挂在U盘成功
  17. gitflow概念及上传本地文件到github
  18. Java版二叉树的前序遍历查找、中序遍历查找和后序遍历查找
  19. 盘点2010年电子书市场
  20. 《黑道风云》与日本、美国的黑道文化,SLG游戏出海如何突破重围,变身黑马?

热门文章

  1. 【滑动窗口】leetcode209:长度最小的子数组
  2. Media Player Classic - HC 源代码分析 1:整体结构
  3. 我的世界java版_我的世界Java版1.15版本
  4. IDEA代码行宽设置
  5. 设置按钮背景为透明去掉button按钮左右两边的留白
  6. mysql 收藏表如何建立_代码收藏系列--mysql创建数据库、数据表、函数、存储过程命令...
  7. 芝加哥计算机科学硕士录取难度,美国cs研究生申请难度有多大?
  8. build shop
  9. 数据库的四大事务特性
  10. 函数宏定义 与函数自定义