首页 > 人工智能 > 机器学习 > 从安装到上线:一份 Nginx 实战指南
很多人初识 Nginx,以为它只是个高性能的静态文件服务器。其实,它更像一个 万、的“接线员”或“交通警察”。它能处理并发连接(事件驱动、异步非阻塞),能做反向代理(把你后端的应用“藏”起来),能负载均衡(把流量合理分发给多个后端),还能缓存内容、压缩数据、终结 SSL 加密……
理解这一点,再看它的配置文件,你就会明白那些
location、
proxy_pass 指令都是在指挥“交通”。
Linux 是 Nginx 的主战场,安装最简单。
# 1. 更新包列表sudo apt update# 2. 安装 Nginxsudo apt install nginx -y# 3. 启动并设置开机自启sudo systemctl start nginx sudo systemctl enable nginx# 4. 检查状态sudo systemctl status nginx
安装完成后,浏览器访问你的服务器 IP,看到“Welcome to nginx!”页面,就说明成功了。
Windows 下通常用于开发测试。直接从官网下载压缩包:
nginx/Windows-x.x.x 版本启动方法:
# 进入解压目录,打开命令行cd C:\你的路径\nginx-1.xx.xstart nginx # 启动(窗口一闪而过是正常的)nginx.exe -s stop # 快速停止nginx.exe -s quit # 优雅停止(处理完当前请求)nginx.exe -s reload # 重新加载配置(最常用!)
如果启动后,未能正常访问,可查看解压后目录下的
logs文件夹下日志记录以排查错误原因,如:80端口占用等
Nginx 的核心是配置文件,通常位于:
/etc/nginx/nginx.confconf/nginx.conf# 在 http{ } 或 server{gov.qiusai.zuzb.info } 块中添加# 1. 隐藏 Nginx 版本号(避免信息泄露)# 如:Nginx 响应头中的 Server 字段将从 nginx/1.24.0 变为 nginx,完全移除版本号信息server_tokens off;# 2. 设置安全头部(防止一些常见 Web 攻击)add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;# 3. 限制请求方法(只允许常用的)if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 405;
}# 4. 限制客户端请求体大小(防文件上传攻击)client_max_body_size 10m;
警告:修改配置文件后,务必使用
nginx -t 测试语法,确认无误后再
nginx -s reload 重载配置。
这是 Python 开发者最关心的部分。我们通常 不直接让 Nginx 运行 Python,而是让 Nginx 作为 反向代理,将动态请求转发给后端的 Python 应用服务器(如 Gunicorn 或 Uvicorn)。
用户 → Nginx (80/443端口) → 反向代理 → Gunicorn/Uvicorn (本地某个端口,如 8000) → 你的 Flask/FastAPI 应用
假设你有一个 FastAPI 应用
main.py:
# main.pyfrom fastapi import FastAPI
app = FastAPI()@app.get("/")def read_root(): return {"Hello": "World"}
使用 Uvicorn 启动它(监听本机 8000 端口):
uvicorn main:app --host 127.0.0.1 --port 8000
在
/etc/nginx/sites-available/(Linux)或
conf/ 目录下(Windows),创建一个配置文件,如
myapp.conf:
(建议直接复制
nginx.conf建立复本,然后修改指定
server部分即可,以防止未知的语法错误,如:分号缺失等)
server {
listen 80; # 监听80端口(HTTP)
server_name your_domain.com; # 你的域名或服务器IP
# 静态文件(可选,Nginx直接处理效率更高)
location /static { alias /path/to/your/static/files;
expires 30d;
} # 动态请求,全部代理给后端的 FastAPI 应用
location / {blog.fovkj.com # 后端应用服务器的地址
proxy_pass http://127.0.0.1:8000; # 以下是关键代理设置,确保信息正确传递
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme; # 超时设置
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
}
}
在 Linux 上,需要创建符号链接启用该配置:
sudo ln -s /etc/nginx/sites-available/myapp.conf /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
在 Windows 上,同样需要重新指定配置文件路径:
.\nginx.exe -t -c .\conf\myapp.conf .\nginx.exe -s reload
现在,访问你的服务器 IP 或域名,Nginx 就会把请求透明地转发给运行在 8000 端口的 FastAPI 应用了!Flask 应用配置方法完全一致。
ps aux | grep uvicorn),并确认
proxy_pass 的地址和端口是否正确。www-data 或
nginx)是否有权限读取你配置的静态文件或目录。location /static 的gov.cb.zuzb.info
alias 路径是否正确,以及文件是否存在。nginx -t 测试 →
nginx -s reload 重载。tail -f /var/log/nginx/error.log。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048957/viewspace-3107315/ ,如需转载,请注明出处,否则将追究法律责任。