Nginx配置笔记

Nginx相关配置学习:Nginx免费视频教程_哔哩哔哩_bilibili

视频前两节为环境准备及nginx安装,因为已经用上了,就不再记录,从第3节开始

主要配置文件讲解

查询相关目录

rpm -ql nginx

配置文件

/etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
worker_processes 1; #进程数,可以等于cpu核心数,有利于处理高并发
events {
worder_connections 1024; #后台允许最大并发数
}
http {
...
sendfile on; # 开启高速传输模式
#tcp_nopush on; # 减少网络报文数量
#gzip on; # 资源压缩
include /etc/nginx/conf.d/*.conf; # 包含的子配置文件
}

/etc/nginx/nginx.d/default.conf

1
2
3
4
5
6
7
8
9
server {
listen 80; # 配置的监听端口
server_name localhost; # 配置的域名
location / {
root /usr/share/nginx/html; # 网站根目录
index index.html index.htm; # 默认访问的文件
}
error_page 500 502 503 504 /50x.html; # 50错误默认访问的页面
}

启动、停止和重启

启动服务

nginx 直接启动

systemctl start nginx.service linux系统启动一项服务

停止服务

nginx -s quit 从容停止,防止工作未完成就停止

nginx -s stop 立即停止

killall nginx 杀死进程

systemctl stop nginx.service linux系统停止一项服务

重启服务

systemctl restart nginx.service

重新载入服务

用于修改配置文件后重新载入

nginx -s reload

查询进程

ps aux | grep nginx 查看是否启动程序

查看端口号使用情况

netstat -tlnp

错误页面设置和访问权限控制

打开default.conf配置文件

错误页面设置

sever {}中找到error_page 项进行设置

可以设置直接转到服务器某个页面,也可以直接跳转到http网页

访问控制

sever {}中找到location / {}

禁止访问

deny X.X.X.X;禁止某个ip访问

XXX.XXX.XXX.66/200 66-200都不能访问

允许访问

allow X.X.X.X;

deny all;

访问权限详细设置

如果设置顺序为:

1
2
3
4
location = /img {
deny X;
allow X;
}

则拒绝访问,因为访问控制先匹配到了deny,后面相关的访问控制就不再进行匹配

为特定文件设置访问控制

精确匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
# img目录允许所有用户访问
location = /img {
allow all;
}
# admin目录禁止所有用户访问
location = /admin {
deny all;
}
# 正则表达式 所有的.php文件都不能访问
location ~\.php$ {
deny all;
}
# 禁止访问后,访问被拦截,返回403

根据端口号设置虚拟主机

default.conf中的每个server {}就相当于一个虚拟主机

新建虚拟主机

在/etc/nginx/conf.d目录下新建.conf配置文件

vim 8001.conf

1
2
3
4
5
6
sever {
listen 8001;
server_name localhost;
root /usr/share/nginx/html/html8001;
index index.html;
}

在/usr/share/nginx/html/下新建html8001文件夹,在里面新建index.html文件

浏览器采用ip:端口号即可访问

使用域名设置虚拟主机

1
2
3
4
5
6
sever {
listen 80;
server_name localhost; # 此处改为相应的域名
root /usr/share/nginx/html/html8001;
index index.html;
}

通过域名管理页面设置DNS之后,直接用不同的子域名访问服务器,即可看到不同的页面

反向代理

1
2
3
4
5
6
7
sever {
listen 80;
server_name localhost; # 此处改为相应的域名
location / {
proxy_pass X.X.X.X; # 被代理的服务器
}
}

适配pc或移动设备

1
2
3
4
5
6
7
8
9
10
11
sever {
listen 80;
server_name localhost; # 此处改为相应的域名
location / {
root /usr/share/nginx/pc;
if ($http_user_agent ~* 'Android|webOS|iPhone|iPad|BlackBerry') {
root /usr/share/nginx/mobile;
} #~代表使用正则匹配 *代表不区分大小写
index index.html;
}
}

设置Gzip压缩

1
2
3
4
5
6
http {
...
gzip on; # 开启gzip压缩
gzip_types text/plain application/javascript text/css; # 设置压缩内容
...
}