nginx服务与调优

39 阅读4分钟

event模块

用于配置服务器的事件驱动机制的模块。它定义了 Nginx 如何处理并发连接和网络事件,以及如何与底层操作系统的事件机制交互。

  1. 最大并发连接数:
worker_connections  65536;
  1. 选择事件驱动:

    nginx默认使用epoll时间驱动类型

use epoll;
##不写默认是epoll
  1. 互斥锁:

使用互斥锁来限制同时只有一个 worker 进程能够接受新的连接。在高并发环境中可以提高性能和稳定性。在高流量和高并发的情况下,使用 accept_mutex on; 可能会导致性能下降,因为每个 worker 进程在接受新连接时都需要等待互斥锁的释放。

accept_mutex on;
#追求稳定打开
  1. 网络多连接:

当 multi_accept 设置为 on 时,Nginx 的 worker 进程会一次性接受多个新连接,在高并发环境中,可以提高性能。可能会导致某些 worker 进程在某一时刻接受了更多的连接,而其他进程接受较少的连接。这可能会影响负载均衡。(建议设置on,处理高并发)

multi_accept on;

http模块

是用于配置 HTTP 服务器功能的核心模块。定义和管理 HTTP 服务、虚拟主机、反向代理、负载均衡、缓存、访问控制等一系列与 Web 服务器相关的功能。

server块 基于域名构建虚拟主机:

指定子配置文件

多个服务编写在不同的子配置文件中,可以更好地管理

mkdir -p /apps/nginx/conf.d
 
vim /apps/nginx/conf/nginx.conf  
 
include       /apps/nginx/conf.d/*.conf;

256a70090dd146308ab270e10d0ae6e3.png

编写子配置文件

cd /apps/nginx/conf.d
 
vim pc.conf
 
    server {
        listen 80;
        server_name www.wzw.com;
        root /apps/nginx/html/pc/;
    }
 
vim m.conf
 
    server {
        listen 80;
        server_name m.wzw.com;
        root /apps/nginx/html/m/;
    }

36f12db4d361409e906149eed732d337.png

b60dc7c5b8b349739f7f2066d150969f.png

构建数据文件

  1. 创建文件夹

d466a74da7fc420ebb6eec38ba5abb98.png

  1. 构建数据
1.创建文件夹
 
mkdir /apps/nginx/html/{pc,m}
 
2.构建数据
 
echo pc > /apps/nginx/html/pc/index.html
echo mmm > /apps/nginx/html/m/index.html
 
nginx -s reload

ccc432d4177b4d74b8f56a2d2e44c172.png

测试

客户机更改host文件:

vim /etc/hosts
 
    192.168.88.100 www.wzw.com m.wzw.com

93b31c2eb9ff4cbfb4727eb388c0bfea.png

基于端口

3fc6d3c8474444c394ca13326cb94018.png

基于IP

需要添加一块虚拟网卡

ifconfig ens33:0 192.168.88.101

更改子配置文件IP

1183f42aeddb40fa9242873253fab1a6.png

alias 别名

别名设置

server {
   listen 80;
   server_name www.cs.com;
   location /nwes {
        root /data/nginx/html/pc/;
        #相当于追加  将文件夹news追加到/data/nginx/html/pc/news
        }
   location /study{
        alias /mnt/nginx/sports/;
        #相当于替换访问路径 你访问 study  就是访问/mnt/nginx/sports
        }

location

在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,按一定的优化级找出一个最佳匹配。

语法规则:

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

=        #需要请求字串与uri精确匹配,大小敏感,如果匹配成功就停止立即处理请求
^~       #表示包含正则表达式,并且匹配以指定的正则表达式开头,不区分字符大小写
~        #表示包含正则表达式,并且区分大小写
~*       #表示包含正则表达式,并且不区分大写
不带符号  #匹配起始于此uri的所有的uri
 \        #表示包含正则表达式并且转义字符。可以将 . * ?等转义为普通符号

#匹配优先级从高到低:
=,   ^~ ,   ~/~* ,  不带符号

案例

location = / {
   [ configuration A ]
}
location / {
   [ configuration B ]
}
location /documents/ {
   [ configuration C ]
}
location ^~ /images/ {
   [ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
   [ configuration E ]
}

访问路径是    /                     
访问路径是    /index.html
访问路径是    /documents/document.html
访问路径是    /images/1.gif
访问路径是    /documents/1.jpg

access四层控制模块

location / {
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    deny  all;

匹配了之后就不往下匹配了,所以范围小的往上放

验证模块

server {
   listen 80;
   server_name www.cs.com;
   location / {
        root /data/nginx/html/pc;
 }
   location /admin{
        root /data/nginx/html/pc;
        auth_basic    "admin site";
        #提示信息,不是所有浏览器都有用
        auth_basic_user_file /apps/nginx/conf.d/.httpuser;
        #密码文件存放位置
 }
}

a225f5bf97c94356ab3e01ae16d6aecf.png

htpasswd

此命令来自于 httpd-tools 包,如果没有安装 一下即可

yum -y install httpd-tools

第一次生成文件:

htpasswd -bc 文件路径 姓名 密码           直接将密码跟在后面

第二次生成文件:

htpasswd -b  文件路径 姓名 密码           直接将密码跟在后面 

-c 代表新建用户名和密码对应的文件

-b 将密码跟在用户名后

a6c19147d1b14b949c7d7414862c6c42.png

自定义错误界面

ab6717ebac2a4976a1c8c10df4f9a5b5.png