在我们的 Linux 服务器上,我们让某种 WebApp 运行自己的小型 Web 服务器,仅使用 http。这意味着它本身不支持 SSL。因此,我正在寻找一种方法,将“某些东西”打包在这个小型 Web 服务器/WebApp 前面,这样它就可以与用户进行 https 通信(必需),并让它继续在本地(服务器内部)与 WebApp 进行 http 通信。
我试图找到类似的东西。但事实上,我发现很多涉及 apache、ssl 和反向代理的东西并没有真正弄清楚事情。我比以前更加困惑了。
需要一些提示、关键词或实现该目的的配置示例。
谢谢
答案1
在 Web 应用前面设置一个 NGINX 或类似的服务器来代理流量。然后使用 SSL 证书设置 NGINX。
设置你的 webapp 在 fx. 端口 8080 上运行,并使用这段代码在 NGINX 中代理它:
location / {
proxy_pass http://127.0.0.1:8080/;
}
启用 SSL 的整个服务器块应如下所示:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
location / {
proxy_pass http://127.0.0.1:8080/;
}
}
Apache 虚拟主机配置示例:
<VirtualHost *:443>
ServerName example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
SSLEngine on
SSLCertificateFile /path/to/certificatefile
SSLCertificateKeyFile /path/to/keyfile
<Location />
ProxyPass http://your-webserver:8080/
ProxyPassReverse http://your-webserver:8080/
</Location>
</VirtualHost>
它还没有经过测试,可能需要进行一些调整,但应该可以让您了解如何进行设置。
答案2
您可以尝试使用 apache 进行重写。之前有一个类似的问题解释了如何重写。https://stackoverflow.com/questions/8371/how-do-you-redirect-https-to-http