步骤 1:安装Nginx
-
在 Ubuntu 或 Debian 系统上安装 Nginx:
sudo apt-get update sudo apt-get install nginx
-
启动并设置 Nginx 为开机启动:
sudo systemctl start nginx sudo systemctl enable nginx
步骤 2:配置 Nginx 支持多协议
-
访问 Nginx 配置文件目录:
cd /etc/nginx/sites-available
-
打开默认配置文件进行编辑:
sudo nano default
-
添加 HTTP 和 HTTPS 配置:
- 确保
listen行包含80和443端口:listen 80; listen [::]:80; listen 443; listen [::]:443;
- 配置服务器块,
server { listen 80; server_name your_domain.com; root /var/www/html; access_log logs/nginx/access.log; error_log logs/nginx/error.log; location / { proxy_pass http://localhost:808; 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; } } server { listen 443; server_name your_domain.com; root /var/www/html; access_log logs/nginx/access.log; error_log logs/nginx/error.log; location / { proxy_pass http://localhost:808; 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; } }
- 确保
-
添加 SMTP 配置:
- 在配置文件末尾添加 SMTP 服务器块:
server { listen 25; server_name mail.your_domain.com; proxy_pass smtp.example.com:587; proxy_set_header X-Mailfrom: $reverse_client_ip; proxy_set_header X-Original-Mmailfrom: $reverse_client_ip; proxy_set_header X-Client-IP: $reverse_client_addr; smtp_user name@example.com; smtp_pass password; error_log logs/nginx/smtp.error.log; }
- 在配置文件末尾添加 SMTP 服务器块:
-
添加 DNS 配置:
- 在配置文件末尾添加 DNS 服务器块:
server { listen 53; server_name dns.your_domain.com; proxy丁 "8.8.8.8"; proxy丁 "8.8.4.4"; proxy_set丁 round-robin; location / { proxy_pass_to "8.8.8.8"; proxy_pass_to "8.8.4.4"; } }
- 在配置文件末尾添加 DNS 服务器块:
-
保存并退出编辑器:
Ctrl + O
步骤 3:设置虚拟服务器
-
在配置文件末尾添加虚拟服务器块:
server { listen 80; server_name your_domain.com; proxy_set_header Host your_domain.com; 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; location / { proxy_pass http://localhost:808; proxy_set_header Host $host; } location /admin { proxy_pass http://localhost:808/admin; } } -
确保所有协议的代理设置正确,尤其是 SMTP 和 DNS 的上游服务器地址和端口。
步骤 4:重新加载 Nginx
-
保存配置文件并退出编辑器:
Ctrl + O
-
重新加载 Nginx:
sudo nginx -s reload
步骤 5:测试配置
-
访问 HTTP 服务:
- 在浏览器中访问
http://your_domain.com,确保你看到正确的内容。
- 在浏览器中访问
-
测试 HTTPS:
- 访问
https://your_domain.com,检查证书是否有效,确保连接安全。
- 访问
-
测试 SMTP 代理:
- 使用邮件客户端(如Thunderbird)配置使用
mail.your_domain.com作为SMTP服务器,使用已配置的用户名和密码发送邮件。
- 使用邮件客户端(如Thunderbird)配置使用
-
测试 DNS 代理:
- 在终端中运行
nslookup your_domain.com或dig your_domain.com,确保 DNS 代理正确解析。
- 在终端中运行
步骤 6:验证日志和错误
-
查看访问日志:
sudo tail -f /var/www/logs/nginx/access.log
-
查看错误日志:
sudo tail -f /var/www/logs/nginx/error.log
-
检查 SMTP 错误日志:
sudo tail -f /var/www/logs/nginx/smtp.error.log
额外配置
-
优化性能:
- 在虚拟服务器块中增加
keepalive和timeout:keepalive 100; client_max_body_size 10M;
- 在虚拟服务器块中增加
-
启用 gzip 压缩:
location / { proxy_set_header Content-Encoding gzip; proxy_set_header X-Content-Type-Options noset; proxy_set_header X-Frame-Options "DENY"; proxy_pass http://localhost:808; } -
SSL 配置:
- 在 HTTPS 服务器块中添加 SSL:
ssl on; ssl_certificate /etc/ssl/certs/your_domain.com.crt; ssl_key_file /etc/ssl/private/your_domain.com.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
- 在 HTTPS 服务器块中添加 SSL:
故障排除
-
防火墙设置:
- 确保 Nginx 监听的端口(80,443,25,53)在防火墙中开放:
sudo ufw allow 80,443,25,53
- 确保 Nginx 监听的端口(80,443,25,53)在防火墙中开放:
-
服务权限:
- 确保 Nginx 运行用户有足够权限:
sudo chown -R www-data:www-data /etc/nginx sudo chown -R www-data:www-data /var/www
- 确保 Nginx 运行用户有足够权限:
-
上游服务器状态:
确保上游服务器(如 localhost:808 或 smtp.example.com:587)运行正常,且接受连接。
通过以上步骤,你应该能够配置一个支持多协议的Nginx代理,确保HTTP、HTTPS、SMTP和DNS流量通过代理正确转发和处理。




