当前位置: 首页 > news >正文

Nginx配置+虚拟主机

目录

一.nginx如何配置高并发

1.1配置思路

1.2配置

二.nginx中HTTP配置

1.http模块解释 

2.server和location模块解释 

3.server虚拟主机

3.1基于不同域名的虚拟主机

3.2基于不同IP 的 虚拟主机

    1.给网卡添加ip地址

2. 修改配置文件    ​编辑​编辑​编辑

3.测试访问 

3.3 基于不同端口的虚拟主机

4. location常见配置指令

1.root:    跟路径配置

1.实验:

2.alias:别名配置

1.实验

3.proxy_pass:反向代理

1.实验

三.nginx 模块 

 1.如何开启或者关闭模块

2.nginx访问状态统计模块

3.网页用户认证模块 

4. 基于客户端访问控制模块​编辑

​5.配置nginx 支持https(ssl模块)

一.nginx如何配置高并发

1.1配置思路

1.设置worker进程的数量取决与cpu物理核心数的数量(或者参数为:atuo ,自动匹配核心cpu数)

2.接着使用 事件驱动的异步非阻塞模型,基于 I/O 多路复用epoll

3.接着配置每个worker进程的连接数,也就是最大支持连接数量,总并发连接数如下。

总并发=worker_processes × worker_connections;

4.由于每个连接都要至少打开一个文件描述符,所以要配置每个worker进程可以打开的最大数量,

即 worker_rlimit_nofile ≥ worker_connections

5. 这只是软件程序支持高并发,但是linux系统不支持的话,也完成不了高并发。设置系统内核参数, 修改/etc/security/limits.conf文件,将一个进程能够打开文件的数量设置为最大值(这个最大值不能超过系统全局的文件描述符限制:/proc/sys/fs/file-max)。

1.2配置

vim   /usr/local/nginx/conf/nginx_conf

重启服务: systemctl   restart nginx

worker数量变成2个 

单个worker进程同时最大打开文件数变成65535 

 修改本地每个进程可以同时打开的最大文件数:

    临时:ulimit           -n  数字                                 永久:vim   /etc/security/limits.conf                

ulimit -Sn  # 查看软限制(当前用户)
ulimit -Hn  # 查看硬限制(当前用户)

 ulimit  -a  # 查看所有限制(当前用户)

注意:

nginx当Web服务器:支持最大并发数= worker_processes×worker_connections

nginx当代理服务器:支持最大并发数=worker_processes*worker_connections/2

原因:因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接

二.nginx中HTTP配置

1.http模块解释 

注意:tcp_nodelay 必须在sedfile开启文件传输模式下才有效,防止网络阻塞

日志格式设定:
$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_addr(记录web服务器最近的ip地址,$http_x_forwarded_for 则记录从开始到web服务器所有ip地址)
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,
通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求
的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来
客户端的请求的服务器地址。

2.server和location模块解释 

注意:修改时间为本地中国时间便于分析日志

timedatectl 是 Linux 系统中用于管理系统时间和日期的工具

timedatectl set-timezone  <时区名称> 

将 Linux 系统的时区设置为 亚洲/上海(即 UTC+8,中国标准时间)

3.server虚拟主机

3.1基于不同域名的虚拟主机

1.为虚拟机提供域名解析: 

echo "192.168.233.32 www.xy101.com www.xy102.com" >> /etc/hosts

2.为虚拟主机准备网页文档

mkdir -p /usr/local/nginx/html/xy101
mkdir -p /usr/local/nignx/html/xy102
echo "<h1>this is xy101 host</h1>" > /usr/local/nginx/html/xy101/index.html
echo "<h1>this is xy102 host</h1>" > /usr/local/nginx/html/xy101/index.html

3.在http模块编写server模块 


server {
		listen 80;
		server_name www.xy101.com;					#设置域名www.xy101.com
		charset utf-8;
		access_log logs/www.xy101.access.log; 		#设置日志名
		location / {
			root /usr/local/nginx/html/xy101;	#设置www.xy101.com 的工作目录
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	
	server {
		listen 80;
		server_name www.xy102.com;					#设置域名www.xy102.com
		charset utf-8;
		access_log logs/www.xy102.access.log; 
		location / {
			root /usr/local/nginx/html/xy102;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	

4.重启服务,访问测试

3.2基于不同IP 的 虚拟主机

    1.给网卡添加ip地址

    第一种方法使用ifconfig命令:

apt install  net-toos    - y  
ifconfig ens33:1 192.168.233.33

  第二种方法:使用ip 命令

ip  addr  add 192.168.233.34 dev ens33  label ens33:2

第三种:添加多个网卡每个ip对应一个ip地址

2. 修改配置文件    
3.测试访问 

3.3 基于不同端口的虚拟主机

1.使用同一个IP地址但使用的端口不同:修改配置文件

2.测试访问 

 

 

4. location常见配置指令

1.root:    跟路径配置

匹配规则:拿location匹配的到的root路径追加URI路径就是域名后面的路径

location    /  {

root  /var/www/html

}

URL :  http://192.168.233.31/index.html          实际文件路径:/var/www/html/index.html
1.实验:

浏览器输入网址:http://192.168.233.31

当 输入http://192.168.233.31            实际:http://192.168.233.31/html/index.html

当 输入http://192.168.233.31/abc       实际:http://192.168.233.31/usr/share/nginx/html/abc

当 输入http://192.168.233.31/abc/123  实际:http://192.168.233.31/usr/share/nginx/html/abc/123

成功日志查看:http://192.168.233.31 

 错误日志中查看: http://192.168.233.31/abc

错误日志中查看: http://192.168.233.31/abc/123


错误日志中查看跟路径匹配

注意:location匹配顺寻,根据location 匹配优先最长路径,找到立即终止、如果用输入192.168.233.31/路径时,location匹配 / 路径配置,路径便是:192.168.233.31/var/www,由于用户没有指定文件,会默认打开index.htm文件

2.alias:别名配置

处理方式:alias路径 替换 location路径 

1.实验

浏览器输入网址:http://192.168.233.31

当 输入http://192.168.233.31            实际:http://192.168.233.31/html/index.html

当 输入http://192.168.233.31/abc/html      实际:http://192.168.233.31/usr/share/nginx/html/html

当输入http://192.168.233.31/abc/123/html  实际:http://192.168.233.31/usr/share/nginx/html/html

3.proxy_pass:反向代理

需要2台服务器:第1台:192.168.233.31(编译安装)    第二台:192.168.233.32(apt安装)

第一台31服务器前期准备: 

第二台服务器前期准备: 

1.实验

实验目的:访问 31 服务器页面 跳转 32 服务器页面,给31 服务器配置反向代理实现

注意:apt 安装的nginx配置文件位置: 

三.nginx 模块 

 1.如何开启或者关闭模块

vim     /opt/源码包名/autu/options

2.nginx访问状态统计模块

1 查看是否安装ngin访问状态统计模块   --with-http_stub_status_module  
2.修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
3.重载配置后,使用浏览器或者 curl -Ls  http://192.168.233.31/status

 4.结合 awk与if 语句进行性能监控 

模拟高并发工具包: ubuntu     apt  install  apache2-utils   

压测工具:ab   -c 指定并发数  -t 60  持续时间   URL

3.网页用户认证模块 

1.nginx中自带了网页用户认证模块不需要手动安装:http_auth_basic_module  

2.生成用户密码认证文件

apt update
apt install -y apache2-utils

htpasswd -c /usr/local/nginx/userlist zhangsan
chown nginx /usr/local/nginx/userlist
chmod 400 /usr/local/nginx/userlist

注意:只有第一次创建usrlist文件时使用-c  ,后面在加新的访问用户的时候不用加-c 选项,如果加了就会重新建立usrlist 文件,原先用户信息会被覆盖。 

	server {
		location / {
			......
			##添加认证配置##
			auth_basic "secret";	#设置密码提示框文字信息
			auth_basic_user_file /usr/local/nginx/userlist;
		}
	}

4. 基于客户端访问控制模块

1.访问控制( http_access_module)规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

5.配置nginx 支持https(ssl模块)

1.安装nginx时需要添加ssl模块  --with-http_ssl_module

2.使用命令工具生成证书

相关文章:

  • RabbitMQ延迟消息
  • python学智能算法(八)|决策树
  • 解决 openeuler 系统 docker 下载慢,docker 镜像加速
  • HTML、CSS
  • 电子元器件——电感参数与选型
  • C++学习内存管理
  • Mysql连接---语言连接和图形化界面
  • Chrome/Edge浏览器离线安装插件全攻略:CRX/ZIP文件手动安装教程
  • 深度探索DeepSeek部署的安全底线
  • C++博客分享
  • 从零开始开发纯血鸿蒙应用之无框截图
  • python和devops
  • 卷积神经网络(知识点)
  • js中堆和栈
  • Python贪吃蛇小游戏
  • 矩阵幂(矩阵k次幂)
  • 【孟德尔随机化】Leave-one-out analysis的异常点,判断
  • 计算机网络-综合布线系统
  • JavaScript 数据类型详解:基本类型与引用类型的区别与应用
  • 2000-2022年上市公司创新数据:突破性创新和渐进性创新(含原始数据+处理代码+结果)
  • 龙华新区网站制作/拍照搜索百度识图
  • 怎么做自己的网站/百度浏览器官网
  • 网站开发设计方案书/千锋培训机构官网
  • 手机网站案例/广州seo关键词优化外包
  • 网站竞价开户/网站搭建关键词排名
  • 做视频直播类型的网站/查看浏览过的历史记录百度