基本操作
bash
# 查看 yum 源是否存在
yum list | grep nginx
# 安装 nginx
yum install nginx
# version
nginx -v
# 查看 Nginx 的安装目录:rpm 是linux的rpm包管理工具,-q 代表询问模式,-l 代表返回列表
rpm -ql nginx
# 启动 nginx 服务 ✨
nginx
# 查看服务状态
ps aux | grep nginx
# 停止服务 ✨
nginx -s stop #立即停止服务
nginx -s quit #从容停止服务 进程完成当前工作后再停止
# 重启 nginx
systemctl restart nginx.service
# 重新载入配置文件 ✨
nginx -s reload
# 查看端口号的占用情况
netstat -tlnpnginx.conf
bash
# 运行用户,默认即是nginx,可以不进行设置
user nginx;
# Nginx 进程,一般设置为和 CPU 核数一样
worker_processes auto;
# 错误日志存放目录
error_log /var/log/nginx/error.log;
#进程 pid 存放位置
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024; # 单个后台进程的最大并发数
}
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;
sendfile on; #开启高效传输模式
tcp_nopush on; #减少网络报文段的数量
tcp_nodelay on; #禁用了Nagle算法,允许小包的发送
keepalive_timeout 65; # keep-live 超时时间
types_hash_max_size 2048;
include /etc/nginx/mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型
# 加载子配置项的目录,自定配置存放的地方 ✨
include /etc/nginx/conf.d/*.conf;
server {
#...
}
}nginx.conf.default
bash
#... 前面还有配置
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80; #配置监听端口
server_name localhost; #配置域名
location / {
root html; #服务默认启动目录
index index.html index.htm; #默认访问文件
}
error_page 500 502 503 504 /50x.html; #错误状态码的显示页面,配置后需要重启
location = /50x.html {
root html;
}
}
}
# Settings for a TLS enabled server....访问控制
处理错误页面
error_page 指令用于自定义错误页面
500,502,503,504这些就是 HTTP 中最常见的错误代码,/50.html 用于表示当发生上述指定的任意一个错误的时候,都是用网站根目录下的/50.html 文件进行处理。- 404 Not Found
bash
root /usr/share/nginx/html; # 根目录
error_page 500 502 503 504 /50x.html;
error_page 404 /404.html;error_page 不仅可以只使用本服务器的资源,还可以使用外部的资源 比如
bash
error_page 404 https://alvin.run; # 找到文件 跳转到 https://alvin.run限制访问
指令优先级
我们的服务器只允许特定主机访问,比如内部 OA 系统,或者应用的管理后台系统,更或者是某些应用接口,这时候我们就需要控制一些 IP 访问,我们可以直接在 location 里进行配置。
bash
location / {
allow 47.112.48.225;
deny all;
}上面的配置表示只允许 47.112.48.225 进行访问,其他的 IP 是禁止访问的。
但是如果我们把 deny all 指令,移动到 allow 47.112.48.225 之前,所有的 IP 都不允许访问。
复杂访问控制权限匹配
在工作中,访问权限的控制需求更加复杂,例如,对于网站下的 img(图片目录)是运行所有用户访问,但对于网站下的 admin 目录则只允许公司内部固定 IP 访问。这时候仅靠 deny 和 allow 这两个指令,是无法实现的。我们需要 location 块来完成相关的需求匹配。
bash
location =/img{
allow all;
}
location =/admin{
deny all;
}=号代表精确匹配,使用了=后是根据其后的模式进行精确匹配。
使用正则表达式设置访问权限
禁止访问所有 php 的页面:
js
location ~\.php$ {
deny all;
}gizp 配置
bash
server {
.....
gzip on; # 开启压缩
gzip_buffers 32 4k; # 设置用于处理请求压缩的缓冲区数量和大小
gzip_comp_level 6; # 设置gzip压缩级别,级别越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大
gzip_min_length 200; # 当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
gzip_vary on;
.....
}查看 HTTP 响应头信息。你可以清楚的看见 Content-Encoding 为 gzip 类型。
推荐文章