Nginx配置+虚拟主机

devtools/2025/3/17 7:12:40/

目录

nginx%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E9%AB%98%E5%B9%B6%E5%8F%91-toc" name="tableOfContents" style="margin-left:0px">一.nginx如何配置高并发

1.1配置思路

1.2配置

nginx%E4%B8%ADHTTP%E9%85%8D%E7%BD%AE-toc" name="tableOfContents" style="margin-left:0px">二.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%20%E6%A8%A1%E5%9D%97%C2%A0-toc" name="tableOfContents" style="margin-left:0px">三.nginx 模块 

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

nginx%E8%AE%BF%E9%97%AE%E7%8A%B6%E6%80%81%E7%BB%9F%E8%AE%A1%E6%A8%A1%E5%9D%97-toc" name="tableOfContents" style="margin-left:40px">2.nginx访问状态统计模块

3.网页用户认证模块 

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

nginx%20%E6%94%AF%E6%8C%81https(ssl%E6%A8%A1%E5%9D%97)-toc" name="tableOfContents" style="margin-left:40px">​5.配置nginx 支持https(ssl模块)

nginx%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E9%AB%98%E5%B9%B6%E5%8F%91" style="background-color:transparent">一.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%E4%B8%ADHTTP%E9%85%8D%E7%BD%AE" name="%E4%BA%8C.nginx%E4%B8%ADHTTP%E9%85%8D%E7%BD%AE">二.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.comcharset 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.comcharset 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%20%E6%A8%A1%E5%9D%97%C2%A0" name="%E4%B8%89.nginx%20%E6%A8%A1%E5%9D%97%C2%A0" style="background-color:transparent">三.nginx 模块 

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

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

nginx%E8%AE%BF%E9%97%AE%E7%8A%B6%E6%80%81%E7%BB%9F%E8%AE%A1%E6%A8%A1%E5%9D%97" name="2.nginx%E8%AE%BF%E9%97%AE%E7%8A%B6%E6%80%81%E7%BB%9F%E8%AE%A1%E6%A8%A1%E5%9D%97" style="background-color:transparent">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 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

nginx%20%E6%94%AF%E6%8C%81https(ssl%E6%A8%A1%E5%9D%97)" name="%E2%80%8B%E7%BC%96%E8%BE%91%E2%80%8B%E7%BC%96%E8%BE%915.%E9%85%8D%E7%BD%AEnginx%20%E6%94%AF%E6%8C%81https(ssl%E6%A8%A1%E5%9D%97)" style="background-color:transparent">5.配置nginx 支持https(ssl模块)

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

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


http://www.ppmy.cn/devtools/167756.html

相关文章

AI-Researcher

AI-Researcher 的工作原理 &#x1f504;端到端科研自动化系统 我们的AI-Researcher通过集成管道为整个科研生命周期提供全面的自动化。该系统协调三个战略阶段的研究活动&#xff1a; 文献综述与创意生成&#x1f4da;&#x1f4a1; &#x1f50d;资源收集器&#xff1a;通过从…

Linux项目自动化构建工具-make/Makefile

背景 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力 一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件需…

抽象工厂模式 (Abstract Factory Pattern)

抽象工厂模式 (Abstract Factory Pattern) 是一种创建型设计模式&#xff0c;它提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 一、基础 1. 意图 提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 2. …

2、操作系统之软件基础

一、硬件支持系统 &#xff0c;系统管理硬件 操作系统核心功能可以分为&#xff1a; 守护者&#xff1a;对硬件和软件资源的管理协调者&#xff1a;通过机制&#xff0c;将各种各样的硬件资源适配给软件使用。 所以为了更好的管理硬件&#xff0c;操作系统引进了软件。其中3大…

基于django+vue的购物商城系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统首页 热卖商品 优惠资讯 个人中心 后台登录 管理员功能界面 用户管理 商品分类管理…

56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT 登录模块开发教程&#xff08;十&#xff09;&#xff1a;总结与展望 文章目录 HarmonyOS NEXT 登录模块开发教程&#xff08;十&a…

解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题

问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题&#xff1a; 1.ipadpro 接上鼠标后&#xff0c;滚轮上下反转&#xff0c;这个是苹果自己的模拟造成的问题&#xff0c;在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…

css实现报警特效

报警特效通常包括闪烁、颜色变化或者动态的警示框。 这里我优先使用纯CSS和原生JavaScript&#xff0c;避免使用框架。同时&#xff0c;注意浏览器的兼容性&#xff0c;比如使用浏览器前缀或者替代属性。 CSS报警特效实现方法 报警特效通常需要结合颜色渐变、闪烁动画、动态…