电影
web服务器的配置(Nginx入门配置:10分钟搞定Web服务器)

想把网站跑起来?Nginx是最常用的Web服务器,轻量高效。

今天教你快速入门,10分钟搞定基础配置。

安装

Ubuntu/Debian:

sudo apt updatesudo apt install nginx

CentOS:

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:配置改了不生效?

  1. 先测试配置:nginx -t
  2. 没报错再重载:nginx -s reload

Q:端口被占用?

# 看谁占用了80端口ss -tlnp | grep :80

Q:访问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 - 反向代理

先从最简单的静态网站配置开始,慢慢加功能。

有问题评论区交流~


顶一下()     踩一下()

热门推荐

发表评论
0评