Nginx 安装与配置指南
596 字
3 分钟
Nginx 安装与配置指南
一、安装
CentOS(yum)
# 添加 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 nginxUbuntu / Debian(apt)
apt install -y nginxsystemctl start nginxsystemctl enable nginxnginx -t二、主配置文件结构
通常不会直接修改主配置文件,而是采用引入外部文件的方式管理多个站点。
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;}三、静态站点 / Vue SPA
server { listen 80; server_name example.com; root /opt/app/dist; index index.html;
location / { try_files $uri $uri/ /index.html; }
location /api/ { proxy_set_header Host $http_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_pass http://127.0.0.1:8080/; }}四、SSL / HTTPS
server { listen 80; server_name example.com; return 301 https://$host$request_uri;}
server { listen 443 ssl http2; server_name example.com;
ssl_certificate /opt/cert/example.com.pem; ssl_certificate_key /opt/cert/example.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" always;
root /opt/app/dist; index index.html;
location / { try_files $uri $uri/ /index.html; }
location /api/ { proxy_set_header Host $http_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_pass http://127.0.0.1:8080/; }}五、反向代理
server { listen 80; server_name app.example.com;
location / { proxy_set_header Host $http_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_send_timeout 600s; proxy_read_timeout 600s; proxy_pass http://127.0.0.1:3000; }}六、WebSocket 代理
代理 WebSocket 服务时需额外设置 Upgrade 和 Connection 请求头,否则 WS 握手会失败。
map $http_upgrade $connection_upgrade { default upgrade; '' close;}
server { listen 80; server_name ws.example.com;
location / { proxy_set_header Host $http_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_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_connect_timeout 60s; proxy_read_timeout 3600s; proxy_send_timeout 3600s; proxy_pass http://127.0.0.1:3001; }}Tip
map 指令需放在 http 块内(通常在主配置文件中定义一次即可),用于自动将 HTTP 升级为 WebSocket 连接。proxy_read_timeout 建议设置较大值,防止长连接被提前断开。
七、TCP 流量转发(stream 模块)
适用于转发 MySQL、Redis 等 TCP 服务。stream 块与 http 块同级。以 MySQL 为例(安装参见 CentOS MySQL 5.7 安装):
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;}Note
使用 stream 模块前需确认编译时包含了该模块:
nginx -V 2>&1 | grep with-stream八、MinIO 反向代理
Note
尚未部署 MinIO?参见:MinIO 对象存储安装指南
MinIO 签名验证依赖 Host 头,必须正确透传,否则出现 The request signature we calculated does not match the signature you provided 错误。
server { listen 9000; server_name minio.example.com; client_max_body_size 0;
location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:9001; }}支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
相关文章 智能推荐
1
Docker 配置私服自签名证书信任
虚拟化与容器 介绍如何在 Linux 和 Windows 客户端上配置 Docker 信任私有镜像仓库的自签名 SSL 证书,解决拉取推送时的证书验证失败问题。
2
跳过登录弹框:实现 Basic Auth 自动授权
技术插曲与避坑 详解如何通过 URL 传参、Nginx 反向代理注入 Header 以及浏览器插件等方式,实现对 Basic Auth 认证站点的免密自动登录。
3
Nginx 使用 sub_filter 注入自定义 HTML 标签
服务与应用运维 通过 Nginx 的 ngx_http_sub_module 模块,在反向代理响应中注入自定义 JS、CSS 或 HTML 标签,适用于无法修改源码的第三方页面定制场景。
4
CI/CD 手册:Jenkins 自动化发布全流程
服务与应用运维 详细记录如何通过 Jenkins 搭建自动化流水线,实现 Node.js 前端项目与 Spring Boot 后端项目的打包、上传及一键部署。
5
如何在 Ubuntu Server 上快速部署 Clash
服务与应用运维 在没有图形界面的 Ubuntu Server 下,通过 Mihomo (Clash Meta) 二进制快速搭建代理,临时解决 GitHub 下载慢、外网 API 不通的问题。
随机文章 随机推荐