Nginx 配置文件结构
Linux 中 Nginx 的配置文件:
通常位于 /etc/nginx/nginx.conf
或 /usr/local/nginx/conf/nginx.conf
。
Nginx 采用模块化设计,主要分为以下部分:
1. 全局块
配置与服务器整体相关的参数,如工作进程数、日志路径等。
2. Events 块
配置与网络连接相关的参数。
events {
worker_connections 1024; # 每个工作进程的最大连接数
}
3. Http 块
配置 HTTP 服务器相关的参数,如虚拟主机、反向代理、负载均衡等。包括多个 server
块。
<NGINX>
http {
include mime.types; # 包含 MIME 类型配置文件
default_type application/octet-stream; # 默认文件类型
access_log /var/log/nginx/access.log; # 访问日志路径
# 定义一个虚拟主机
server {
listen 80; # 监听端口
server_name example.com; # 域名
location / {
root /var/www/html; # 静态资源路径
index index.html; # 默认首页文件
}
}
}
4. Server 块
定义虚拟主机(每个 server
块对应一个网站),如域名、端口、根目录等。
server {
# 使用 SSL 证书启用 HTTPS:
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/secure.crt; # SSL 证书
ssl_certificate_key /etc/nginx/ssl/secure.key; # SSL 证书密钥
listen 80; // 监听端口
server_name example.com; # 域名
location / {
root /var/www/html; # 网站根目录
index index.html; # 默认首页
}
}
将静态文件放到 /var/www/html
目录,访问 http://example.com
即可。
5. Location 块
定义请求 URL 路径的匹配规则和处理逻辑。
location /images/ {
root /var/www; # 访问 /images/ 时,文件路径为 /var/www/images/
}
常用配置示例
1. 静态资源服务
server {
listen 80;
server_name example.com;
location /static/ {
root /var/www;
}
}
2. 反向代理
server {
listen 8081;
server_name localhost;
location / {
proxy_pass http://localhost:8080; # 将请求转发到后端服务器
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
proxy_pass
指令将浏览器请求 localhost:8081 转发到 http://localhost:8080
浏览器输入的是 localhost:8081 ,后台实际访问 http://localhost:8080
3. 负载均衡
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend; # 将请求转发到后端服务器
}
}
4. HTTPS 配置
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
location / {
root /var/www/html;
index index.html;
}
}
5. URL 重写
location /user/ {
rewrite ^/user/(.*)$ /profile?user=$1 break;
}
一、下载Nginx
Nginx 作用:
- 发布静态网站
- 实现反向代理
- 实现负载均衡
- 缓存加速
- HTTPS 配置
负载均衡:当同时有多个用户访问我们服务器的时候,为了减少服务器的压力,我们需要将用户引入服务器集群中较轻压力的服务器,分担较重压力服务器的负担。
反向代理:反向代理就像一个 “中间人”,它站在 客户端 和 后端服务器 之间,负责接收客户端的请求,然后将请求转发给后端服务器,并将服务器的响应返回给客户端。
正向代理 |
反向代理 |
为客户端服务(隐藏客户端) |
为服务器服务(隐藏服务器) |
客户端知道代理的存在 |
客户端不知道代理的存在 |
常用于访问外部资源(如 VPN) |
常用于负载均衡和缓存加速 |
- 反向代理:客户端不知道后端服务器是谁,反向代理隐藏了服务器。
- 正向代理:服务器不知道客户端是谁,正向代理隐藏了客户端(比如通过 VPN 访问国外社交网站)。
二、Nginx 注意事项
注意:开发中遇到的一个小坑, nginx 用命令重新加载有时候执行 nginx -s reload
会不生效,会启动多个后台进程,遇到此情况用任务管理器打开关掉重新启动就好。
三、Nginx 常用命令
1、启动
start nginx
2、重新加载
nginx -s reload
3、停止
nginx -s stop
4、指定配置文件启动
nginx -c /path/to/nginx.conf
5、查看 Nginx 进程状态
ps aux | grep nginx
6、测试修改配置文件后语法是否正确
nginx -t
如果 Nginx 是通过 systemd
管理的,可以使用以下命令替代:
启动:systemctl start nginx
停止:systemctl stop nginx
重新加载:systemctl reload nginx
查看状态:systemctl status nginx
技术水平有限,如有错误,欢迎指正!