如何强制 http webapp 使用 https (ssl)?

如何强制 http webapp 使用 https (ssl)?

在我们的 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

相关内容