我们正在运行 Proxmox 服务器,我已使用 IPTables 配置该服务器,将端口 443 重定向到 proxmox 端口 8006。重定向任何试图访问的人的最轻松方法是什么http://proxmox.example.com到https://proxmox.example.com。只是为了进行 http 重定向而在系统上设置整个 Web 服务器,这感觉有点可惜。
答案1
最小:
while true ; do nc -l -p 80 \
-c 'echo -e "HTTP/1.1 302 Moved Temporarily\nLocation: https://yourhost.example.com/\n\n"' ; done
虽然我已经通过 xinetd 运行它(并重定向到端口 8006 而不是弄乱 iptables):
#!/bin/bash
echo -e "HTTP/1.1 302 Moved Temporarily\nLocation: https://yourhost.example.com:8006/\n\n"
答案2
由于@symcbean提到使用systemd
套接字而不是xinetd
,并且我偶然发现了同样的问题,所以我将发布我的解决方案。
需要放入两个文件/etc/systemd/system
。
假设我们给这个服务起个名字[email protected]
(注意结尾的@
),每次收到请求时都会执行systemd
:
[Unit]
Description=Redirect HTTP to HTTPS
[Service]
ExecStart=/usr/bin/echo -e "HTTP/1.0 302 Moved Temporarily\r\nLocation: https://proxmox.example.com/\r\n\r\n"
StandardInput=socket
此socket
单元文件告知systemd
端口accept()
80 上的 并调用[email protected]
来处理传入连接。它需要命名为http-to-https.socket
。
[Unit]
Description=Redirect HTTP to HTTPS
[Socket]
ListenStream=80
Accept=yes
[Install]
WantedBy=sockets.target
现在只需运行
# systemctl enable http-to-https.socket
并systemd
会愉快地完成这项工作。
答案3
如果您想要执行简单的 HTTP 到 HTTPS 重定向,而又不想为此设置完整的 Web 服务器,则可以使用 Nginx 以最少的配置实现此目的。操作方法如下:
安装Nginx:您可以在 Proxmox 服务器上安装 Nginx。您可以使用包管理器来执行此操作。例如,在基于 Debian 的系统上:
sudo apt update
sudo apt install nginx
创建配置文件:创建一个简单的 Nginx 配置文件用于重定向。您可以在 /etc/nginx/sites-available/ 目录中创建一个新的配置文件,例如 proxmox:
sudo vi /etc/nginx/sites-available/proxmox
在文件中添加以下配置:
server {
listen 80;
server_name proxmox.example.com;
location / {
return 301 https://$host$request_uri;
}
}
此配置在端口 80 上监听对 proxmox.example.com 的请求,并发出永久 (301) 重定向到等效的 HTTPS URL。
然后启用配置并创建符号链接以启用此配置,然后测试配置:
sudo ln -s /etc/nginx/sites-available/proxmox /etc/nginx/sites-enabled/
然后测试你的 Nginx 配置是否没有冲突
sudo nginx -t
如果没有冲突,则只需软重新加载您的 Nginx。
sudo nginx -s reload
我希望这对你有用。