什么是nginx 、安装nginx

一、 什么是nginx

1.1 nginx的概念

  • 一款高新能、轻量级Web服务软件
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
  • 单台物理服务器可支持30 000~50 000个并发请求。

1.2 nginx模块与作用

  • 核心模块:是 Nginx 服务器正常运行必不可少的模块,提供错误日志记录 、配置文件解析 、事件驱动机制 、进程管理等核心功能

  • 标准HTTP模块:提供 HTTP 协议解析相关的功能,比如: 端口配置 、 网页编码设置 、 HTTP响应头设置 等等

  • 可选HTTP模块:主要用于扩展标准的 HTTP 功能,让 Nginx 能处理一些特殊的服务,比如:Flash 多媒体传输 、解析 GeoIP 请求、 网络传输压缩 、 安全协议 SSL 支持等

  • 邮件服务模块:主要用于支持 Nginx 的 邮件服务 ,包括对 POP3 协议、 IMAP 协议和 SMTP协议的支持

  • Stream服务模块: 实现反向代理功能,包括TCP协议代理 反向

  • 第三方模块:是为了扩展 Nginx 服务器应用,完成开发者自定义功能,比如: Json 支持、 Lua 支持等

二、怎么在shell上安装 nginx

2.1编译安装

yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包   
useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理

cd /opt/
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#官网下载安装包

tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
#解压软件包
mkdir /apps/nginx -p


./configure --help   
#查看帮助模块

./configure --prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module


make    
make install

chown -R nginx.nginx /apps/nginx
#修改权限

vim /usr/lib/systemd/system/nginx.service
#建立文件
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000

[Install]
WantedBy=multi-user.target
 

2.2 yum安装

yum安装有缺点:会少包

Centos7 需要安装epel源
 
cd /etc/yum.repos.d
vim epel.repo
[epel]
name=epel
baseurl=https://mirrors.aliyun.com/epel/$releasever/x86_64
gpgcheck=0
 
yum install -y epel-release
 
yum install nginx -y

三、nginx的信号使用

信号    解释
nginx -v    显示版本
nginx -V    
显示编译详细情况、模块等信息

nginx -t    
检查语法格式

nginx -T    打印当前配置
nginx -s    发送信号
nginx -s stop    立即关闭
nginx -s quit    优雅退出,不影响业务的状态下退出
nginx -s reload    重新加载配置文件
nginx -s  USR1    分割日志
nginx -s  USR2    优雅升级
nginx -g 'user zhangsan;'     以张三身份运行,默认是以nginx身份
nginx -g 'daemon off;'    前台运行命令

四、nginx调优

关闭版本或修改版本
 修改启动的进程数
cpu与work 进程 绑定
nginx进程的优先级
调试work进程打开的文件的个数
服务是否已后台方式运行

4.1 关闭版本或修改版本

4.2 隐藏nginx名称

vim  /opt/nginx-1.18.0/src/core/nginx.h

#隐藏nginx,进入配置文件

vim  /opt/nginx-1.18.0/src/http/ngx_http_header_filter_module.c

#修改第二个配置文件

4.3 修改启动的进程数

vim /apps/nginx/conf/nginx.conf

[root@localhost ~]#ps axo pid,cmd,psr,ni|grep nginx
#可以看到 nginx的  worker数量
 18620 nginx: master process /usr/   0   0
 18621 nginx: worker process         2   0
 18622 nginx: worker process         3   0
 18623 nginx: worker process         0   0
 18624 nginx: worker process         3   0
 18641 grep --color=auto nginx       0   0

4.4 cpu与work 进程 绑定

CPU序号:
CPU MASK: 00000001:0号CPU
          00000010:1号CPU
          ................
            10000000:7号CPU
worker_cpu_affinity 00000001 00000010 00000100 00001000;第0号---第3号CPU   
#序号绑定cpu    亲缘性
worker_cpu_affinity 00000101 00001010;
#同一个work  可以绑定  两个cpu可以这么写 但是不建议,本来就是 不希望飘动,这样也是飘动


实际操作
例子:

vim  /apps/nginx/conf/nginx.conf
user nginx;
worker_processes auto;
worker_cpu_affinity 00000001 00000010;
#绑定到  第一 和 第二块cpu上
error_log /var/log/nginx/error.log;
#注意 要绑一起绑

4.5 nginx进程的优先级

vim  /apps/nginx/conf/nginx.conf

worker_priority 0; 
#工作进程优先级,-20~20(19)

ps axo pid,cmd,psr,ni|grep nginx|sort -n

查看所占cpu和优先级

ps -elf 可以查看所有程序优先级

4.6 调试work进程打开的文件的个数

pid /run/nginx.pid;
worker_priority -20;
worker_rlimit_nofile 65536; 
#所有worker进程能打开的文件数量上限,包括:Nginx的所有连接(例如与代理服务器的连接等),而不仅仅是与客户端的连接,另一个考虑因素是实际的并发连接数不能超过系统级别的最大打开文件数的限制.最好与ulimit -n 或者limits.conf的值保持一致,

4.7 服务是否已后台方式运行

一般服务都是后台运行,前台容器中会用到

user nginx;
worker_processes 2;
worker_cpu_affinity 00000101 00000010;
daemon off;
#加入此选项

4.8 event事件

events {
   worker_connections  65536;  #设置单个工作进程的最大并发连接数
   use epoll;
   #使用epoll事件驱动,Nginx支持众多的事件驱动,比如:select、poll、epoll,只能设置在events模块中设置。
   accept_mutex on; 
   #on为同一时刻一个请求轮流由work进程处理,而防止被同时唤醒所有worker,避免多个睡眠进程被唤醒的设置,默认为off,新请求会唤醒所有worker进程,此过程也称为"惊群",因此nginx刚安装完以后要进行适当的优化。建议设置为on
   multi_accept on; 
   #ON时Nginx服务器的每个工作进程可以同时接受多个新的网络连接,此指令默认为off,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个。建议设置为on
}

五、Nginx的核心配置指令

5.1 访问状态统计配置

cd /usr/local/nginx/sbin
#根据安装路径自由修改/apps/nginx/sbin也可
nginx -V

Active connections ∶ 表示当前的活动连接数;
server accepts handled requests∶表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数已处理的请求数。
可curl http∶//192.168.79.210/status 结合 awk与if 语句进行性能监控。

5.2 基于授权的访问控制

第一步:生成用户密码认证文件

yum install -y httpd-tools
#安装工具
 
htpasswd -c /usr/local/nginx/passwd.db zhangsan
#生成用户密码认证文件(注意路径
 
chown nginx /usr/local/nginx/passwd.db 
chmod 400 /usr/local/nginx/passwd.db
#修改属性和赋予执行权限

第二步:修改主配置文件相应的目录,添加认真配置

vim 
#路径/apps/nginx/conf/nginx.conf
 
 location / {
            root   html;
            index  index.html index.htm;
            #添加认证配置
            auth_basic "secret";                    #设置密码提示框文字信息
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }

5.3 基于客户端访问控制

访问控制规则如下:
deny IP/IP段:拒绝某个IP或IP段的客户端访问。
allow IP/IP段:允许某个IP或IP段的客户端访问。
规则从上往下执行,如果匹配到则停止,不会再往下继续匹配。

第一步:在主配置文件中添加控制规则

vim
#注意路径/apps/nginx/conf/nginx.conf
 
        location / {
            root   html;
            index  index.html index.htm;
            auth_basic "secret";
            auth_basic_user_file /usr/local/nginx/passwd.db;
            
            # 添加控制规则
            deny 192.168.200.11;                    #拒绝访问的客户端IP
            allow all;                            #允许其他所有客户端访问
        }

第二步:重启服务

systemctl restart nginx.service 

第三步:被拒绝的客户端访问测试 

第四步:其他客户端访问测试 

5.4 基于域名的nginx虚拟主机

第一步:为虚拟主机提供域名和IP的映射

第二步:为虚拟主机准备网页文档

第三步:还原nginx主配置文件

cd /apps/nginx/conf
cp nginx.conf.default  nginx.conf       #还原主配置文件

第四步:修改主配置文件

 server {
        listen       80;
        server_name  www.p.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/html/p;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
    server {
        listen       80;
        server_name  www.c.com;
        #charset koi8-r;
        #access_log  logs/host.access.log  main;

        location / {
            root   /var/www/html/c;
            index  index.html index.htm;
        }

第五步:重启nginx后进行访问测试

5.5  基于IP的nginx虚拟主机

第一步:添加虚拟网卡,修改主配置文件

ifconfig ens33:0 192.168.200.11/24
 
vim /apps/nginx/conf/nginx.conf
 
    server {
        listen       192.168.200.11:80;                #修改监听的为ip
        server_name  www.c.com;
        charset utf-8;
        access_log  logs/c.com.access.log;
        location / {
            root   /var/www/html/c;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen      192.168.200.11:80;                #修改监听的为ip
        server_name  www.p.com;
        charset utf-8;
        access_log  logs/p.access.log;
        location / {
            root   /var/www/html/p;
            index  index.html index.htm;
        }

5.6  基于端口的nginx虚拟主机

第一步:修改主配置文件

vim /usr/local/nginx/conf/nginx.conf
#/apps/nginx/conf/nginx.conf同理
 
    server {
        listen       192.168.200.11:666;                #修改监听的为ip的666端口
        server_name  www.p.com;
        charset utf-8;
        access_log  logs/p.com.access.log;
        location / {
            root   /var/www/html/p;
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen      192.168.200.12:888;                #修改监听的为ip的888端口
        server_name  www.c.com;
        charset utf-8;
        access_log  logs/c.com.access.log;
        location / {
            root   /var/www/html/zhuo;
            index  index.html index.htm;
        }

   

相关推荐

  1. 什么nginx

    2024-02-22 17:36:03       62 阅读
  2. Nginx什么?怎么用?

    2024-02-22 17:36:03       59 阅读
  3. Nginx-01-Nginx 什么? 能做什么

    2024-02-22 17:36:03       27 阅读
  4. nginx 安装

    2024-02-22 17:36:03       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-22 17:36:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-22 17:36:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-22 17:36:03       82 阅读
  4. Python语言-面向对象

    2024-02-22 17:36:03       91 阅读

热门阅读

  1. 188-成年人的世界没有对错,只有利益是吗?

    2024-02-22 17:36:03       42 阅读
  2. Nginx的流式响应配置

    2024-02-22 17:36:03       48 阅读
  3. python子域名收集工具

    2024-02-22 17:36:03       49 阅读
  4. Web应用程序的自动测试工具WebDriver简介

    2024-02-22 17:36:03       53 阅读
  5. k8s-创建命名空间的方法

    2024-02-22 17:36:03       40 阅读
  6. Unity单元测试

    2024-02-22 17:36:03       56 阅读
  7. 基于Mocha的typescript调试教程

    2024-02-22 17:36:03       51 阅读
  8. windows系统用VS环境开发linux程序之一

    2024-02-22 17:36:03       53 阅读