相关推荐recommended
Nginx基础配置以及实操
作者:mmseoamin日期:2023-12-27

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、nginx主配置文件
    • 1.全局配置
    • 2.I/O事件配置
    • 3.HTTP配置
    • 4.检查文件是否配置正确
    • 5.浏览器测试
    • 6.总配置文件图示
      • 6.1 nginx总配置文件的三个模块
      • 6.2 HTTP文件配置的图示
        • 6.2.1 日志格式图示
        • 6.2.2 缓存服务
        • 二、Nginx实操
          • 1.nginx的访问状态统计
            • 1.1测试
              • 1.1.1 浏览器测试
              • 1.1.2 命令行测试
              • 2.基于授权的访问控制
                • 2.1原理
                • 2.2 配置
                  • 2.2.1查看htpasswd的工具是否存在
                  • 2.2.2 创建密码文件
                  • 2.2.3 修改属主交给ngxin管理,并给予400权限
                  • 2.2.4 修改nginx主配置文件
                  • 2.2.5 重启服务,重新访问统计页面
                  • 3.基于客户端的访问控制
                    • 3.1 配置
                    • 3.2 访问测试
                    • 4.基于域名nginx虚拟机主机
                      • 4.1 修改配置文件,添加域名和IP本地映射
                      • 4.2 创建网页文件
                      • 4.3 修改ngxin主配置文件:域名不同,IP地址相同,端口相同
                      • 4.4 浏览器测试
                      • 5.基于IP的nginx虚拟主机
                        • 5.1 原理
                        • 5.2 配置
                          • 5.2.1 创建虚拟网卡
                          • 5.2.2 修改配置文件
                          • 5.2.3 测试
                          • 6.基于端口nginx虚拟主机
                            • 6.1 修改主配置文件
                            • 6.2 测试虚拟主机(基于端口)

                              一、nginx主配置文件

                              1.全局配置

                              vim /usr/local/nginx/conf/nginx.conf

                              #运行用户,若编译时未指定则默认为 nobody
                              #user nobody; 
                              #工作进程数量,可配置成服务器内核数 * 2,如果网站访问量不大,一般设为1就够用了
                              worker_processes 4; 
                              #错误日志文件的位置
                              #error_log logs/error.log;  
                              #PID 文件的位置
                              #pid logs/nginx.pid; 		   
                              

                              拓展:

                              2p:2个物理cpu

                              4c:1个物理核有4个核心,一共有2*4=8个逻辑核

                              例:4c、16G 硬盘是高效盘,相当于系统盘

                              存储:oss

                              网络存储:nas

                              用什么机器:私有云

                              2.I/O事件配置

                              events {
                              #使用 epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
                                  use epoll; 
                              #每个进程处理 4096 个连接   2000
                                  worker_connections 4096; 	
                              }
                              #如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
                              #在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
                              #可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
                              /etc/security/limits.conf
                              #epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
                              若工作进程数为 8,每个进程处理 4 096 个连接,则允许 Nginx 正常提供服务的连接数
                              已超过 3 万个(4 096×8=32 768),当然具体还要看服务器硬件、网络带宽等物理条件的性
                              能表现。
                              

                              **注意:**临时修改内核的大小:ulimit -n

                              永久修改内核的大小:/etc/security/limits.conf

                              查看内核的大小:ulimit -a

                              如果编辑文件时出现“注意”的可以使用:rm -rf /usr/local/nginx/conf/.nginx.conf.swp————删除这个生成的文件

                              Nginx基础配置以及实操,在这里插入图片描述,第1张

                              3.HTTP配置

                              使用“http { }”界定标记,包括访问日志、HTTP 端口、网页目录、默认字符集、连接保持,以及后面要讲到的虚拟 Web 主机、PHP 解析等一系列设置,其中大部分配置语句都包含在子界定标记“server { }”内

                              http {
                              	##文件扩展名与文件类型映射表
                                  include       mime.types;
                              	##默认文件类型
                                  default_type  application/octet-stream;
                              	##日志格式设定,前端给日志信息定位配置
                                  #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;
                              	##支持文件发送(下载)
                                  sendfile        on;
                              	##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
                                  #tcp_nopush     on;
                              	##连接保持超时时间,单位是秒
                                  #keepalive_timeout  0;
                                  keepalive_timeout  65;
                              	##gzip模块设置,设置是否开启gzip压缩输出
                                  #gzip  on;
                              	
                              	##Web 服务的监听配置
                              	server {
                              		##监听地址及端口
                              		listen 80; 
                              		##站点域名,可以有多个,用空格隔开
                              		server_name www.ff.com;
                              		##网页的默认字符集
                              		charset utf-8;
                              		##根目录配置
                              		location / {
                              			##网站根目录的位置/usr/local/nginx/html
                              			root html;
                              			##默认首页文件名
                              			index index.html index.php;
                              		}
                              		##内部错误的反馈页面
                              		error_page 500 502 503 504 /50x.html;
                              		##错误页面配置
                              		location = /50x.html {
                              			root html;
                              		}
                              	}用来记录客户端用户名称;
                              }
                              
                              通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
                              location常见配置指令,root、alias、proxy_pass
                              root(根路径配置):root /var/www/html
                              请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html
                              alias(别名配置):alias /var/www/html
                              请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html
                              proxy_pass(反向代理配置)
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第2张

                              Nginx基础配置以及实操,在这里插入图片描述,第3张

                              4.检查文件是否配置正确

                              Nginx基础配置以及实操,在这里插入图片描述,第4张

                              5.浏览器测试

                              Nginx基础配置以及实操,在这里插入图片描述,第5张

                              6.总配置文件图示

                              6.1 nginx总配置文件的三个模块

                              Nginx基础配置以及实操,在这里插入图片描述,第6张

                              6.2 HTTP文件配置的图示

                              HTTP主要有压缩、日志、超时模块

                              Nginx基础配置以及实操,在这里插入图片描述,第7张

                              6.2.1 日志格式图示

                              日志格式就是客户端访问网页时访问的是前端,前端要调用后端,因此后端需要客户端的请求信息,则在前端就需要规定日志的格式文件

                              Nginx基础配置以及实操,在这里插入图片描述,第8张

                              6.2.2 缓存服务

                              访问的时候会放在缓存服务器中直接在缓存里面取不用再加载,大量的访问会在缓存里不会造成奔溃等

                              socket接口=ip地址加端口号

                              客户端直接访问缓存

                              Nginx基础配置以及实操,在这里插入图片描述,第9张

                              二、Nginx实操

                              1.nginx的访问状态统计

                              首先,使用/usr/local/nginx/sbin/nginx -V 来查看之前安装是否包含 --with-http_stub_status_module(开启访问状态统计模块)

                              修改/usr/local/nginx/conf/nginx.conf 配置文件 指定访问位置并添加stub_status的配置

                              先备份配置文件,防止文件出错。

                              #备份配置文件
                              cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
                              vim /usr/local/nginx/conf/nginx.conf
                              #添加以下配置
                              location /status {
                              	stub_status on;
                              	access_log off;
                              }
                              #检查语法
                              nginx -t
                              #重新启动
                              systemctl restart nginx.service 
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第10张

                              Nginx基础配置以及实操,在这里插入图片描述,第11张

                              Nginx基础配置以及实操,在这里插入图片描述,第12张

                              1.1测试

                              1.1.1 浏览器测试

                              Nginx基础配置以及实操,在这里插入图片描述,第13张

                              1.1.2 命令行测试

                              Nginx基础配置以及实操,在这里插入图片描述,第14张

                              2.基于授权的访问控制

                              特点:对访问用户目录权限的控制

                              认证方式是:用户名和密码,用htpasswd命令,htpasswd是一个用于目录访问权限认证的一个工具。

                              -c 用于创建密码文件,如果文件已存在,会覆盖。

                              查看系统是否有该命令,若没有请安装httpd-tools依赖包

                              2.1原理

                              Nginx基础配置以及实操,在这里插入图片描述,第15张

                              2.2 配置

                              2.2.1查看htpasswd的工具是否存在
                              #检测是否存在
                              [root@test3 opt]# which htpasswd
                              /usr/bin/which: no htpasswd in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
                              #不存在安装
                              [root@test3 opt]# yum -y install httpd-tools
                              [root@test3 opt]# which htpasswd 
                              /usr/bin/htpasswd
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第16张

                              2.2.2 创建密码文件
                              #创建用户设置密码
                              [root@test3 opt]# htpasswd -c /usr/local/nginx/passwd.db qing
                              #输入新密码
                              New password: 
                              #确认密码
                              Re-type new password:
                              #创建成功
                              Adding password for user xue
                              
                              2.2.3 修改属主交给ngxin管理,并给予400权限
                              [root@test3 opt]# chown nginx /usr/local/nginx/passwd.db
                              [root@test3 opt]# chmod 400 /usr/local/nginx/passwd.db
                              
                              2.2.4 修改nginx主配置文件

                              修改nginx主配置文件添加访问控制配置(在对应的location位置,想对哪个location访问控制,就在哪个location里配置)

                              对访问状态统计页面进行控制,配置如下

                              vim /usr/local/nginx/conf/nginx.conf
                              location /status {
                                       auth_basic "secret";
                                       #设置路径
                                       auth_basic_user_file /usr/local/nginx/passwd.db;
                                          stub_status on;
                                          access_log off;
                                      }
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第17张

                              2.2.5 重启服务,重新访问统计页面
                              nginx -t
                              nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
                              nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
                              systemctl restart nginx.service 
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第18张

                              3.基于客户端的访问控制

                              deny是拒绝某一个IP地址、某一个网段客户机访问

                              allow允许某一个IP地址、某一个网段客户机访问

                              规则匹配顺序,从上往下,匹配即停止。

                              需求:添加一条规则拒绝192.168.245.111IP的主机访问

                              3.1 配置

                              #在此location位置配置规则
                               location / {
                                          root   html;
                                          index  index.html index.htm index.php;
                                          #拒绝192.168.245.111
                                          deny 192.168.245.111;
                                          #允许访问所有IP
                                          allow all;
                                }
                              systemctl restart nginx.service
                              

                              3.2 访问测试

                              在192.168.245.111虚拟机测试

                              Nginx基础配置以及实操,在这里插入图片描述,第19张

                              4.基于域名nginx虚拟机主机

                              基于域名:域名不同,IP地址相同,端口相同

                              4.1 修改配置文件,添加域名和IP本地映射

                              修改 /etc/hosts 文件,添加域名与IP的本地映射

                              echo "192.168.245.110 www.zzq.com" >> /etc/hosts
                              echo "192.168.245.110 www.zqq.com" >> /etc/hosts
                              

                              4.2 创建网页文件

                              mkdir -p /var/www/html/zzq
                              mkdir -p /var/www/html/zqq
                              echo "

                              www.zzq.com

                              " >> /var/www/html/zzq/index.html echo "

                              www.zqq.com

                              " >> /var/www/html/zqq/index.html

                              4.3 修改ngxin主配置文件:域名不同,IP地址相同,端口相同

                              vim /usr/local/nginx/conf/nginx.conf

                               server {
                                      listen     192.168.245.110:80;
                                      server_name  www.zzq.com;
                                      access_log  logs/zzq.access.log;
                                      charset utf-8;
                                      location / {
                                          root   /var/www/html/zzq;
                                          index  index.html index.htm index.php;
                                }
                                      error_page   500 502 503 504  /50x.html;
                                      location = /50x.html {
                                          root   html;
                                      }
                              }
                                   server {
                                      listen     192.168.245.110:80;
                                      server_name  www.zqq.com;
                                      charset utf-8;
                                      access_log  logs/zqq.access.log;
                                      location / {
                                          root   /var/www/html/zqq;
                                          index  index.html index.htm index.php;
                                }
                                   error_page   500 502 503 504  /50x.html;
                                      location = /50x.html {
                                          root   html;
                                      }
                              }
                              
                              nginx -t
                              nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
                              nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
                              systemctl restart nginx.service 
                              

                              4.4 浏览器测试

                              Nginx基础配置以及实操,在这里插入图片描述,第20张

                              Nginx基础配置以及实操,在这里插入图片描述,第21张

                              5.基于IP的nginx虚拟主机

                              现在监控的是IP加端口——基于IP地址的不同端口

                              5.1 原理

                              Nginx基础配置以及实操,在这里插入图片描述,第22张

                              5.2 配置

                              5.2.1 创建虚拟网卡
                              ifconfig ens33:0 192.168.245.200 netmask 255.255.255.0
                              

                              Nginx基础配置以及实操,在这里插入图片描述,第23张

                              5.2.2 修改配置文件

                              修改nginx主配置文件 www.zzq.com 配置的IP地址为192.168.245.110

                              vim /usr/local/nginx/conf/nginx.conf
                               server {
                                      listen     192.168.245.200:80;
                                      server_name  www.zzq.com;
                                      charset utf-8;
                                      access_log  logs/zzq.access.log;
                                      location / {
                                          root   /var/www/html/zzq;
                                          index  index.html index.htm index.php;
                                }
                                      error_page   500 502 503 504  /50x.html;
                                      location = /50x.html {
                                          root   html;
                                      }
                              }
                              
                              nginx -t
                              nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
                              nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
                              systemctl restart nginx.service 
                              
                              5.2.3 测试

                              Nginx基础配置以及实操,在这里插入图片描述,第24张

                              6.基于端口nginx虚拟主机

                              不同端口同ip

                              基于端口虚拟机,只管端口

                              6.1 修改主配置文件

                              修改nginx主配置文件www.zzq.com配置的IP地址为192.168.245.110 端口为8080

                               server { 
                                      listen     192.168.245.110:8080;
                                      server_name  www.zzq.com;
                                            
                                      charset utf-8;
                                      access_log  logs/zzq.access.log;
                                      location / {
                                  
                                          root   /var/www/html/zzq;
                                          index  index.html index.htm index.php;
                                } 
                                      error_page   500 502 503 504  /50x.html;
                                      location = /50x.html {
                                          root   html;
                                      }
                              } 
                              
                              nginx -t
                              nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
                              nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
                              systemctl restart nginx.service
                              

                              6.2 测试虚拟主机(基于端口)

                              Nginx基础配置以及实操,在这里插入图片描述,第25张