Nginx
约 1054 字大约 4 分钟
2025-06-03
1.Nginx简介
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器
Nginx 特点:
- 处理静态文件,索引文件以及自动索引;
- 反向代理加速,简单的负载均衡和容错;
- FastCGI,简单的负载均衡和容错;
- 模块化的结构。过滤器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI过滤器中,到同一个 proxy 或者 FastCGI 的多个子请求并发处理;
- SSL 和 TLS SNI 支持;
相关链接:
- Nginx教程:https://www.w3ccoo.com/nginx/
2.安装Nginx
查看 Nginx 信息
brew info nginx
安装 Nginx
brew install nginx
启动 Nginx
nginx
测试
关闭 nginx
nginx -s stop
重启 nginx ,重新加载配置再启动
nginx -s reload
3.Nginx 核心配置文件
由于我们是使用 brew 方式安装 nginx 的,需要找到 nginx 的安装路径
# 查看 brew 安装的东西
brew list
# 查看 brew 安装 nginx 的路径
brew list nginx
# 进入 nginx 路径
cd nginx路径/nginx
# 查看系统默认配置文件
# vim nginx.conf
Nginx 的常见配置指令域:
3.1 端口监听
- 指令:listen
- 作用域:server
- 默认值:listen*:80 或 *:8080
- 指令说明:绑定 IP 、监听端口
配置样例:
http {
server {
listen 127.0.0.1:8000; # 监听127.0.0.1的8000端口
listen 127.0.0.1; # 监听127.0.0.1的默认80端口(root权限)
listen 8000; # 监听本机所有IP的8000端口
listen *:8000; # 监听本机所有IP的8000端口
listen localhost:8000; # 监听locahost的8000端口
listen [::]:8000; # 监听IPv6的8000端口
}
}
3.2 主机名称
- 指令:server_name
- 作用域:server
- 默认值:--
- 指令说明:设置所在的 server 指令域的主机名
样例:
当 server_name 指令值中有多个主机名时,第一个主机名为首主机名。
http {
server {
server_name example.com .example.com; # 泛域名的使用
server_name www.example.; # 多个后缀域名的使用server_name
www.example.com ~^www.example.com$; # 正则表达式匹配
# 正则匹配变量的场景
server_name ~^(www\.)?(.+)$;
location / {
root /sites/$2;
}
# 正则匹配为变量的场景
server_name ~^(www\.)?(?<domain>.+)$;
location / {
root /sites/$domain;
}
}
}
3.3 location 路由匹配
location 是 Nginx 对 HTTP 请求中的 URI 进行匹配处理的指令
location 的语法形式如下:
location [=|~|~*|^~|@] pattern { ... }
其中,[=|~*|^~|@]
部分称为 location 修饰语,修饰语定义了与 URI 的匹配方式。pattern 为匹配项,可以是字符串或正则表达式。
无修饰语:完全匹配 URI 中除访问参数以外的内容,匹配项的内容只能是字符串,不能是正则表达式
location /images { root /data/web; }
修饰语(“=”):完全匹配 URI 中除访问参数以外的内容,Linux 系统下会区分大小写,Windows 系统下则不会。
location = /images { root /data/web; }
修饰语("~"):完全匹配 URI 中除访问参数以外的内容,Linux 系统下会区分大小写,Windows 系统下则会无效。匹配项的内容必须是正则表达式。
location ~ /images/.*\.(gif|jpg|png)$ { root /data/web; }
修饰语("~*"):完全匹配 URI 中除访问参数以外的内容,不区分大小写。匹配项的内容必须是正则表达式。
location ~* \.(gif|jpg|png)$ { root /data/web; }
修饰语("^~"):完全匹配 URI 中除访问参数以外的内容,匹配项的内容如果不是正则表达式,则不再进行正则表达式测试。
location ^~ /images { root /data/web; }
3.4 root 根目录配置
- 指令:root
- 作用域:http、server、location
- 默认值:on
- 指令说明:设置请求 URL 的本地文件根目录
样例:
当 root 指令在 location 指令域时,root 设置的是 location 匹配访问路径的上一层目录,样例中被请求文件的实际本地路径为 /data/web/flv/。
location /flv/ {
root /data/web;
}
4.例子
- 新建位于 /Users/haipeng-lin/local/ 的 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Welcome to Nginx!</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
padding: 50px;
}
h1 {
color: #2E6D8C;
}
p {
font-size: 1.2em;
color: #555;
}
a {
color: #007BFF;
text-decoration: none;
}
</style>
</head>
<body>
<h1>Welcome to Nginx!</h1>
<p>This is a test page for your Nginx server. If you see this page, then your Nginx installation is working.</p>
<p>For more information, visit <a href="https://nginx.org/">Nginx Official Website</a>.</p>
</body>
</html>