想把网站跑起来?Nginx是最常用的Web服务器,轻量高效。
今天教你快速入门,10分钟搞定基础配置。
安装
Ubuntu/Debian:
sudo apt updatesudo apt install nginxCentOS:
sudo yum install nginx启动:
sudo systemctl start nginxsudo systemctl enable nginx # 开机自启访问服务器IP,能看到Nginx欢迎页就成功了。
配置文件在哪
主配置文件:/etc/nginx/nginx.conf
站点配置:/etc/nginx/conf.d/ 或 /etc/nginx/sites-available/
日志文件:/var/log/nginx/
最简单的配置
在/etc/nginx/conf.d/下创建mysite.conf:
server { listen 80; server_name example.com; root /var/www/mysite; index index.html; location / { try_files $uri $uri/ =404; }}把网页文件放到/var/www/mysite目录,重载配置:
sudo nginx -t # 测试配置是否正确sudo nginx -s reload # 重载配置反向代理
最常用的场景:前端请求Nginx,Nginx转发给后端服务。
server { listen 80; server_name api.example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}所有请求都会转发到本地8080端口的服务。
静态文件+API分离
前后端分离项目常用配置:
server { listen 80; server_name example.com; # 前端静态文件 location / { root /var/www/frontend; index index.html; try_files $uri $uri/ /index.html; # 支持前端路由 } # API请求转发到后端 location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }}负载均衡
多个后端服务,Nginx分发请求:
upstream backend { server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082;}server { listen 80; server_name example.com; location / { proxy_pass http://backend; }}HTTPS配置
server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/ssl/example.com.pem; ssl_certificate_key /etc/nginx/ssl/example.com.key; location / { root /var/www/mysite; }}# HTTP跳转HTTPSserver { listen 80; server_name example.com; return 301 https://$server_name$request_uri;}常用配置片段
开启gzip压缩:
gzip on;gzip_types text/plain text/css application/json application/javascript;gzip_min_length 1000;设置缓存:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 7d;}限制请求频率:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;server { location /api/ { limit_req zone=one burst=20; proxy_pass http://backend; }}跨域配置:
location /api/ { add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'Content-Type'; if ($request_method = OPTIONS) { return 204; } proxy_pass http://127.0.0.1:8080/;}常用命令
nginx -t # 测试配置nginx -s reload # 重载配置nginx -s stop # 停止nginx -s quit # 优雅停止systemctl status nginx # 查看状态查看日志
# 访问日志tail -f /var/log/nginx/access.log# 错误日志tail -f /var/log/nginx/error.log常见问题
Q:配置改了不生效?
- 先测试配置:nginx -t
- 没报错再重载:nginx -s reload
Q:端口被占用?
# 看谁占用了80端口ss -tlnp | grep :80Q:访问403 Forbidden?
检查目录权限:
chmod -R 755 /var/www/mysitechown -R nginx:nginx /var/www/mysite远程调试
经常需要在本地测试Nginx配置,然后部署到服务器。
我用星空组网把电脑和服务器连起来,改完配置直接scp上去:
scp mysite.conf root@10.26.1.5:/etc/nginx/conf.d/ssh root@10.26.1.5 "nginx -t && nginx -s reload"一行命令搞定上传和重载,不用手动登录操作。
小结
Nginx入门核心配置:
- listen - 监听端口
- server_name - 域名
- root - 网站根目录
- location - 路径匹配
- proxy_pass - 反向代理
先从最简单的静态网站配置开始,慢慢加功能。
有问题评论区交流~
