nginx基础

发布于:2024-12-18 ⋅ 阅读:(92) ⋅ 点赞:(0)

一. nginx网站服务

  1. 高并发,轻量级的web服务软件
  2. 稳定性高,系统资源消耗率低
    对http的高并发处理能力高,单台物理服务器可以支持30000-50000个并发。
    一般来说在工作中,单台的并发一般在20000。

二. nginx的功能介绍

  1. 主要功能就是处理静态页面,文本,图片等等
  2. 动态内容处理能力价差,一般是把动态的请求转发到中间件(PHP,PYthon)转发到后端
  3. 正向代理和反向代理
  4. 支持ssl/tls 加密支持 支持https协议
  5. 支持虚拟主机,在一个nginx的配置当中,可以做对个域名。
  6. nginx自带缓存机制,可以缓存静态文件。
  7. 自带日志记录,但是nginx没有日志分割功能。记录的是nginx自己的业务日志,如果是程序启动,停止,程序出错的日志不包含在内。

2.1 正向代理和反向代理

2.1.1 正向代理

通过一个代理的地址,访问其他的web页面,客户端是知道通过代理服务器访问的目标地址。

2.1.2 反向代理

  • 我们也是通过代理地址访问,但是客户端并不知道流量转发到了哪一台后端服务器。
  • 流量转发是根据算法把流量转发到后台服务器
  • 反向代理=负载均衡

2.2 同步与异步

2.2.1 同步

在互联网中,处理请求的方式,一个服务完成需要其他服务作为依赖时,只有等待被依赖的服务完整后,才算完成。
是一个可靠的序列,要么都成功要么都失败。
服务的状态需要严谨的保持一致。

2.2.2 异步

一个服务的完成需要依赖其他的服务,只是通知其他依赖服务开始执行,不需要等待依赖服务的执行结果,被依赖的服务执行结果也无法确定。是一个不可靠序列。

nginx快的原因,使用的是异步的处理方式

2.3 阻塞与非阻塞

2.3.1 阻塞

在调用结果返回之前,当前的线程会被挂起,一直等到返回结果,在这个期间是不能够执行其他任务的。

2.3.2 非阻塞

不需要等待调用的结果,不能立刻得到结果,也不会阻塞当前的线程,而是立刻返回

nginx的工作方式:异步非阻塞。

三. /usr/local/nginx

  • conf:保存所有nginx配置的文件,其中nginx.conf是nginx主核心配置件,其他的.conf文件主要是nginx的
    相关功能
  • logs:存放nginx日志的目录 access.log 记住访问nginx的日志,error.log记录访问失败的失败(启动失败的日志)
  • sbin:nginx的二进制启动的脚本,一般动用系统控制命令
  • nginx -t:当我们配置完nginx.conf之后,可以用这个命令检测我们配置文件的语法是否正确
  • html:保存的是nginx访问的web页面,这个目录可以修改,文件名一般都是index.htm
nginx -t:检测配置语法
nginx -v:显示nginx的版本
nginx-s:stop start restart reload 传递一个信号让内核处理

3.1 nginx的配置文件详解

全局模块:对全局生效

  • events:配置nginx服务器的并发处理数
  • http:配置代理,缓存,日志以及第三方模块(自定义对http请求进行处理)
  • server:配置虚拟主机的参数 一个http里面可以有多个server
  • location:用来匹配uri
    https://www.bilibili.com/v/kichiku/?spm id from=333.1007.0.0
  • uri:/v/kichiku/
  • 一个server里面可以有多个ocation
root@u1:/usr/local/nginx/conf# vim nginx.conf
#user  nobody;
#nginx的运行用户,注释掉的情况默认用的自定义程序用户
worker_processes  1;
#子进程的数量,一般配置成内核数量两倍,一般不超过8个,超过8个会降低处理性能基本为2-4个。

pid /usr/local/nginx/run/nginx.pid;
#nginx的进程文件的位置

events {
    worker_connections  1024;
}
#每个子进程能够处理的并发连接数,一般也就在20000-40000
#linux打开文件,同时处理进程是有限制的,默认就是1024,修改系统的并发处理数和文件打开数量的限制。


http {
    include       mime.types;
    #文件扩展名于文件类型的映射表
	default_type  application/octet-stream;
	#nginx支持的默认文件类型
	
	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
	#nginx的日志格式,$remote addr都是nginx的内置变量,主要是用来获取请求中的详细信息的
	
	#access_log  logs/access.log  main;
	#日志文件的路径
	
	sendfile        on;
	#支持文件发送(下载文件)
	#tcp_nopush     on;
	#发送数据包前先缓存数据
	
	#keepalive_timeout  0;
    keepalive_timeout  65;
    #连接保持的时间 65秒
   
    #gzip  on;
	#是否对响应的数据进行压缩
	server {
	#在这个模块当中配置web信息和页面的匹配的机制
        listen       80;
		#监听的端口号,可以改,默认是80
        server_name  localhost;
		#站点的域名
        #charset koi8-r;
		#指定页面解码的字符集(utf-8)
        #access_log  logs/host.access.log  main;
		#站点日志文件的位置

        location / {
		#匹配uri /匹配的规则 /通用匹配,模糊匹配
            root   html;
			#root默认的工作目录 /usr/local/nginx/html
            index  index.html index.htm;
			#匹配的工作文件的格式 index开头 html.htm都可以
        }

3.2 修改系统的并发处理数和进程的限制

vim /etc/security/limits.conf
添加
* soft nproc 65535 
* hard nproc 65535 
* soft nofile 65535 
* hard nofile 65535
#*表示任意程序 nproc:系统处理的进程数 nofile:同时打开文件的数量最大就是65535
#只能重启才能生效

root@u1:~# ulimit -n 65535
#临时修改系统的同时打开文件的数量

3.3 location匹配的语法

3.3.1 root

拼接访问,路径和uri合并

location /test {
            root   /var/www/html;
            index  index.html index.htm;
        }
/var/www/html/test/index.html
#需要有test文件夹和index.html文件

3.3.2 alias

绝对路径,工作

location /test {
            alias   /var/www/html/test;
            index  index.html index.htm;
        }

3.4 访问状态的统计

添加

location /status {
            stub_status on;
			#打开统计的功能
            access_log off;
			#做为统计访问的信息不会被记录到日志当中
        }
Active connections: 1    # 表示当前活动的连接数
server accepts handled requests:表示已经处理的连接信息包含以下三个数字
 1 1 1 
 
 已经处理的连接数  成功tcp握手的次数    已经处理的请求数
Reading: 0 Writing: 1 Waiting: 0 
表示服务器正从哭护短的请求中读取数据
服务器正在讲响应数据发送给客户端
表示有连接处于空闲状态,可以处理新的请求

3.5 基于授权的访问控制

apt -y install apache2
htpasswd -c /usr/local/passwd.db dn
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

添加

location / {
            root   html;
            index  index.html index.htm;
			auth_basic "secret";
			#开启加密认证的模块
			auth_basic_user_file /usr/local/nginx/passwd.db;
        }

或
location / {
            root   html;
            index  index.html index.htm;
			deny 192.168.233.10;
			#阻止特定的IP地址访问
        }

四. 基于域名的server

基于域名的虚拟主机

vim nginx.conf

server {
        listen       80;
        server_name  www.lx.com;   #更改名称
        charset utf-8;    #中文显示
        location / {
            root   html;
            index  index.html index.htm;
        }
		error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
vim /etc/hosts

127.0.0.1       localhost
127.0.1.1       du123

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.246.6 www.lx.com   #添加映射

在这里插入图片描述

4.1 独立日志

server {
        listen       80;
        server_name  www.lx.com;
		charset utf-8;
        access_log logs/lx.com.access.log;  #设置日志名称

在这里插入图片描述

4.2 多个域名

vim nginx.conf
#添加
server {
        listen       80;
        server_name  www.lx2.com;
        charset utf-8;  
        access_log  logs/lx2.com.access.log;
		location / {
		root /var/www/html/lx2;
		index index.html
		}
}


mkdir -p /var/www/html/lx2
echo "这是lx2" > /var/www/html/lx2/index.html

在这里插入图片描述
在这里插入图片描述

4.3 不同ip地址

root@u1:/usr/local/nginx/conf# ifconfig ens33:1 192.168.246.100/24   #设置虚拟网卡

root@u1:/usr/local/nginx/conf# vim nginx.conf
server {
        listen  192.168.246.6:80;
        server_name  www.lx.com;
server {
        listen  192.168.246.100:80;
        server_name  www.lx.com;
root@u1:/usr/local/nginx/conf# systemctl restart nginx


root@u1:/usr/local/nginx/conf# vim /etc/hosts

127.0.0.1       localhost
127.0.1.1       du123

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.246.6 www.lx.com
192.168.246.100 www.lx2.com

在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到