nginx的学习
nginx的软件包的安装:
rpm -qc nginx 可以看到软件包安装后的配置文件装在哪里
1.在 /etc/yum.repos.d/ 目录下创建 nginx.repo:
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/rhel/8/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
# 生成缓存
dnf makecache
# 安装 nginx
dnf install -y nginx
# 启动服务
systemctl start nginx
# 设置开机自启
systemctl enable nginx
# 检查运行状态与监听端口
systemctl status nginx
ss -tlnp | grep :80与nginx相关的重要的配置文件
#查看cpu的个数
lscpu
#查看服务的进程数
pa aux | grep nginx
worker: 子进程 master: 主进程
##关于公网ip:就是路由出口,访问其他网站时的标识nginx.conf配置文件中的重要参数及其含义:
全局模块:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /run/nginx.pid;
从配置文件最顶端到 events 块之前的内容。它负责控制 Nginx 服务器整体运行的底层环境与进程行为。
user nginx;
含义:指定运行 Nginx Worker 子进程的系统用户为 nginx。
意义:出于安全考虑,Master 主进程通常由 root 运行以绑定 80/443 等低位端口,但处理请求的 Worker 子进程必须降权为低权限的 nginx 用户运行,避免被黑客通过 Web 漏洞入侵后直接拿到服务器最高控制权。
worker_processes auto;
含义:Nginx 启动的工作进程数量。auto 会自动检测并匹配服务器的 CPU 核心数。
意义:一个 Worker 绑定一个 CPU 核心,能够最大化利用多核性能并减少 CPU 上下文切换的开销。
error_log /var/log/nginx/error.log notice;
含义:指定全局错误日志的保存路径以及日志记录级别(这里是 notice 级别)。
pid /run/nginx.pid;
含义:指定存放 Master 进程 ID(PID)的文件路径。systemctl 管理服务停止或重载配置时需要读取该文件找到主进程。
events模块:
events {
worker_connections 1024;
}
含义:每个 Worker 进程所允许同时处理的最大客户端连接数。http模块:
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
由 http { ... } 包裹,是 Nginx 最核心的配置板块,所有关于 HTTP/HTTPS 协议处理、网站虚拟主机、反向代理、缓存、日志等规则 都在这里定义。
include /etc/nginx/mime.types; 与 default_type application/octet-stream;
含义:引入媒体类型映射表;如果请求的文件格式在表中找不到,默认当作通用的二进制流(下载文件)处理。
意义:让浏览器能正确识别文件是 HTML、CSS、JS 还是图片,从而正确渲染网页而不是弹出下载窗口。
log_format main ... 与 access_log /var/log/nginx/access.log main;
含义:定义访问日志的记录格式并命名为 main,然后将网站的所有访问流量按该格式写入 /var/log/nginx/access.log。
关键字段:
$remote_addr:客户端的真实 IP。
$time_local:请求到达的本地时间。
$request:请求的动作(如 GET /index.html HTTP/1.1)。
$status:HTTP 状态码(如 200、404、502)。
$body_bytes_sent:发送给客户端的响应体大小。
$http_user_agent:客户端浏览器或设备的标识信息。
sendfile on;
含义:开启高效文件传输模式(零拷贝技术)。
意义:传统读取文件需要“磁盘 -> 内核缓冲区 -> 用户缓冲区 -> 网络套接字”,开启后数据直接在内核空间由磁盘送入网卡,大幅提升静态文件(图片、视频、下载包)的传输效率并降低 CPU 占用。
keepalive_timeout 65;
含义:HTTP 长连接保持超时时间为 65 秒。
意义:客户端(浏览器)请求完一个资源后,TCP 连接先不立即断开,65 秒内如果还有新的资源请求可以直接复用该通道,避免频繁进行 TCP 三次握手。
include /etc/nginx/conf.d/*.conf;
含义:模块化拆分。将 /etc/nginx/conf.d/ 目录下所有以 .conf 结尾的配置文件引入到当前位置。
意义:后续添加虚拟主机(配置不同的域名、端口、反向代理或自定义网站)时,不需要把所有 server { ... } 规则硬塞在主配置文件里,只需在该目录下单独写独立的 .conf 文件即可,便于管理和维护使用nginx创建一个网页页面:
vim /etc/nginx/conf.d/game.conf
server {
listen 80;
server_name www.game.com;
location / {
root /code/****;
index index.html index.htm;
}
}
写完.conf文件进行语法检测:
nginx-t
由于并没有购买域名,此域名只能通过/etc/hosts文件里面配置相应IP地址和相应域名
注意修改完配置文件之前为避免selinux上下文确保seliux处于关闭状态
getenforce
setenforce 0
永久关闭seLinux的方法:
直接修改配置文件
[root@linuxedu ~]# vim /etc/selinux/config
reboot重启系统即可。
使用多端口进行访问不同的业务页面:
vim /etc/nginx/conf.d/game.conf
server {
listen 81;
server_name www.game.com;
location / {
root /code/****;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginx使用多域名配置多个业务:
##第一个业务
vim /etc/nginx/conf.d/game.conf
server {
listen 80;
server_name www.flygame.com;
location / {
root /code/****;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginx
##第二个业务:
vim /etc/nginx/conf.d/game.conf
server {
listen 80;
server_name www.fishgame.com;
location / {
root /code/****;
index index.html index.htm;
}
}
nginx -t
systemctl restart nginxlocation的路径匹配:
server {
listen 81;
server_name www.game.com;
location / {
root /code/fishjoy/;
index index.html index.htm;
}
location /download1 {
root /packages;
autoindex on;
}
###匹配的是/packages/download1下面的文件
location /download2 {
alias /packages;
autoindex on;
}
#####匹配的是/packages下面的文件
}
!!注意windows也要在/etc/hosts这个文件下面进行域名解析
C:\Windows\System32\drivers\etc\hosts
在浏览器中进行缓存的清理:shift+ctrl+N
评论