我想知道 nginx 和 ssh 隧道对于 Web 应用程序的性能、安全性和可扩展性的差异。
就我的情况而言,我设置了一个 VPS,它的唯一作用是将流量转发到我的家庭路由器。此流量在 2 个服务器之间以未加密 (HTTP) 的方式传输,我认为在这种情况下使用 SSH 隧道会更容易,而不必设置两次 HTTPS。
我在网上找不到太多关于两者比较的信息。有人说 SSH 隧道是一种“廉价”且“肮脏”的设置?
我知道他们为了不同的目的做了很多不同的事情,但在这个简单的情况下,我认为 nginx 不是必需的。
为了澄清两者之间的区别:
Nginx的:
VPS (Accepts HTTPS, forwards HTTP) → Home server (Accepts HTTP)
# VPS Server configuration
server {
listen 443 ssl;
server_name domain.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # managed by Certbot
location /.well-known {
root /var/www/ssl/domain/;
}
location / {
proxy_pass http://95.245.xxx.xxx:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
real_ip_header X-Real-IP;
real_ip_recursive on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
SSH 隧道:
VPS (Accepts HTTPS, forwards through SSH Tunnel) → Home server (Accepts SSH)
这需要 nginx 进行 SSL 处理
# From the VPS
ssh -A -t -g -N -L 80:localhost:80 [email protected] -o ServerAliveInterval=30
也许隧道 HTTPS 本身可以起作用,从而完全消除 VPS 上 nginx 的使用,但这会产生双层安全性,可能会减慢速度(?)
# From the VPS
ssh -A -t -g -N -L 443:localhost:443 [email protected] -o ServerAliveInterval=30
据我所知,我认为 SSH 更易于设置且更安全,但它是否更快?与 nginx 相比,它的扩展性如何(扩展性,即流量增加)?