232 字
1 分钟
CentOS 安装 Nginx 及生产环境配置指南
一、安装
# 添加 Nginx 官方 YUM 源rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装 Nginxyum install -y nginx
# 启动并设置开机自启systemctl start nginxsystemctl enable nginx二、生产配置
通常我们不会直接修改 Nginx 主配置文件,而是采用引入外部文件的方式管理多个站点。
1. 主配置文件结构
http { # 注释掉默认的 include,防止 80 端口冲突 # include /etc/nginx/conf.d/*.conf;
# 引入自定义 HTTP 配置 include /opt/nginx/http/*.conf;
# 不限制文件上传大小 client_max_body_size 0;}
# TCP/UDP 代理(需要在 http 块外部)stream { include /opt/nginx/server/*.conf;}2. 多站点配置
同一端口可配置多个域名站点:
# a 站点server { listen 80; server_name a.com; # ...}# b 站点server { listen 80; server_name b.com; # ...}3. Vue 前端 + API 反向代理配置
server { listen 7000; server_name localhost;
set $root "/app/h5";
location / { root $root; index index.html; try_files $uri $uri/ /index.html; add_header Cache-Control no-cache; }
location ^~ /api { # 重写:/api/xxx → /xxx rewrite ^/api/(.*)$ /$1 break;
proxy_pass http://192.168.1.20:31100; 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_buffering off; }}4. SSL 配置
server { listen 80; listen 443 ssl; server_name abc.com;
ssl_certificate /opt/nginx/cert/abc.com.pem; ssl_certificate_key /opt/nginx/cert/abc.com.key; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; add_header Strict-Transport-Security "max-age=31536000"; # HTTP 自动跳转 HTTPS error_page 497 https://$host$request_uri;
location / { root /opt/web/html; index index.html index.htm; try_files $uri $uri/ /index.html; }
location /prod-api/ { proxy_pass http://127.0.0.1:7001/; }}5. Stream TCP 反向代理(以 MySQL 为例)
此配置需写在 stream 块内:
upstream mysql3306 { hash $remote_addr consistent; server 192.168.1.58:3306 weight=5 max_fails=3 fail_timeout=30s;}
server { listen 33306; proxy_connect_timeout 100s; proxy_timeout 500s; proxy_pass mysql3306;}6. WebSocket 代理配置
代理 WebSocket 服务时需额外设置 Upgrade 和 Connection 请求头,否则 WS 握手会失败:
map $http_upgrade $connection_upgrade { default upgrade; '' close;}
server { listen 8080; server_name localhost;
location /ws { proxy_pass http://127.0.0.1:9000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; 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_read_timeout 3600s; proxy_send_timeout 3600s; }}TIP
map指令需放在http块内(通常在主配置文件中定义一次即可),用于自动将 HTTP 升级为 WebSocket 连接。proxy_read_timeout建议设置较大值,防止长连接被提前断开。
7. MinIO 特殊配置
如果出现 The request signature we calculated does not match the signature you provided 错误,是因为签名信息在请求头中,必须设置 proxy_set_header Host:
server { listen 9000; server_name localhost;
location / { proxy_set_header Host $http_host; proxy_pass http://192.168.1.10:9001; }} 分享
如果这篇文章对你有帮助,欢迎分享给更多人!
CentOS 安装 Nginx 及生产环境配置指南
https://blog.olinl.com/posts/centos-nginx-install/ 相关文章 智能推荐
1
Nginx 使用 sub_filter 注入自定义 HTML 标签
服务与应用运维 通过 Nginx 的 ngx_http_sub_module 模块,在反向代理响应中注入自定义 JS、CSS 或 HTML 标签,适用于无法修改源码的第三方页面定制场景。
2
Nginx 常用配置速查
服务与应用运维 整理 Nginx 最常用的配置场景,包括静态站点、Vue 单页应用、SSL/HTTPS、反向代理、WebSocket 代理以及 MinIO 签名代理等配置示例。
3
CentOS 安装与服务器初始化配置完整指南
Linux 系统管理 详述 CentOS 从零安装、分区到网络与防火墙配置全流程。助你快速构建稳定、安全的生产级 Web 服务器环境。
4
CentOS 安装 MySQL 5.7 完整指南
服务与应用运维 详解在 CentOS 7 上通过 RPM 包安装 MySQL 5.7 的完整流程,涵盖自定义数据目录、外部访问配置及用户权限管理。
5
CentOS 安装 MongoDB 3.4 并配置认证
服务与应用运维 在 CentOS 上通过 YUM 仓库安装 MongoDB 3.4,配置外部访问与用户密码认证,适合内网开发环境快速搭建。
