nginx
参考文章:https://www.kuangstudy.com/bbs/1353634800149213186
视频链接:https://www.bilibili.com/video/BV1F5411J7vK?t=828.7&p=7
介绍#
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达 50,000 个并发连接数的响应。
作用#
- 反向代理:用户请求服务器会先发给nginx,再由nginx分发给不同服务器。(正向代理:如使用vpn)
- 负载均衡:nginx可设置权重,控制请求进入不同服务器的比例(轮询,加权轮询)
- 动静分离:有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
- iphash解决session共享:对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
安装#
安装
解压nginx,进入nginx文件夹,执行
./configure
:这是一个用于配置软件编译环境的脚本。它会检查系统的各种条件,包括操作系统类型、硬件平台、编译器版本、依赖库的存在和版本等,以确定软件是否可以在当前系统中编译,并生成适合当前系统的 Makefile 文件。
作用:通过检测系统环境,为后续的编译和安装过程做准备。用
make
:主要用于根据configure脚本生成的 Makefile 文件来编译源代码。
make install
:负责将编译好的可执行文件、库文件、配置文件等安装到系统的指定位置,完成软件的安装过程。
nginx会安装在/usr/local/nginx
目录下,配置文件是/usr/local/nginx/conf/nginx.conf
注意:要把centos的80端口防火墙打开,对于云服务器要打开80端口的安全组
常用命令#
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
nginx配置文件结构#
nginx配置文件讲解#
# 主配置文件的全局设置
user nginx; # 定义运行 Nginx 的用户和用户组
worker_processes 1; # 设置工作进程数,通常根据CPU核心数设置
# 全局日志设置
error_log /var/log/nginx/error.log warn; # 设置错误日志文件的路径和日志级别
pid /var/run/nginx.pid; # 设置 Nginx 进程的 PID 文件路径
# 事件模块配置
events {
worker_connections 1024; # 每个工作进程允许的最大连接数
}
# http模块配置
http {
# 设置日志格式
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 /var/log/nginx/access.log main; # 设置访问日志文件及其格式
# 配置 MIME 类型
include /etc/nginx/mime.types; # 导入 mime.types 文件,用于定义文件扩展名与 MIME 类型的对应关系
default_type application/octet-stream; # 默认的 MIME 类型
# 启用 Gzip 压缩
gzip on; # 启用 Gzip 压缩
gzip_disable "msie6"; # 禁用对 IE6 的 Gzip 压缩
# 服务器设置
server {
listen 80; # 监听 80 端口
server_name example.com www.example.com; # 配置服务器名称(域名)
# 根目录及索引文件
root /usr/share/nginx/html; # 配置站点的根目录
index index.html index.htm; # 配置默认的首页文件
# 错误页面配置
error_page 404 /404.html; # 配置 404 错误页面
location = /404.html {
root /usr/share/nginx/html; # 配置错误页面的位置
}
error_page 500 502 503 504 /50x.html; # 配置 5xx 错误页面
location = /50x.html {
root /usr/share/nginx/html; # 配置 5xx 错误页面的位置
}
# 配置静态文件服务
location / {
try_files $uri $uri/ =404; # 尝试查找请求的文件,如果找不到则返回 404
}
# 配置代理转发
location /api/ {
proxy_pass http://127.0.0.1:3000; # 将 /api/ 路径的请求转发到本地的 3000 端口
proxy_set_header Host $host; # 设置请求头中的 Host 字段
proxy_set_header X-Real-IP $remote_addr; # 设置请求头中的 X-Real-IP 字段,传递客户端的真实 IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 设置 X-Forwarded-For,用于传递代理链中的客户端 IP
}
}
# 可以配置多个 server 块(虚拟主机)
server {
listen 443 ssl; # 启用 SSL,监听 443 端口
server_name secure.example.com; # 配置 SSL 虚拟主机的域名
ssl_certificate /etc/nginx/ssl/example.com.crt; # 配置 SSL 证书文件
ssl_certificate_key /etc/nginx/ssl/example.com.key; # 配置 SSL 证书的私钥文件
# 配置 SSL 参数
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 启用支持的 SSL 协议
ssl_ciphers HIGH:!aNULL:!MD5; # 配置加密套件
# 配置 HTTPS 根目录及首页文件
root /usr/share/nginx/secure_html;
index index.html;
# HTTPS 服务器的内容处理
location / {
try_files $uri $uri/ =404; # 尝试查找请求的文件,如果找不到则返回 404
}
}
# 可以包含额外的配置文件
include /etc/nginx/conf.d/*.conf; # 包含所有 conf.d 目录下的配置文件
}
作者:cloud-2-jane
出处:https://www.cnblogs.com/cloud-2-jane/p/18652412
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!