1.9 KiB
1.9 KiB
一键运行脚本
sudo bash -d 域名 -p 内网穿透的端口号
脚本内容
#!/bin/bash
# 解析命令行参数
while getopts d:p: flag
do
case "${flag}" in
d) DOMAIN=${OPTARG};;
p) SERVER_PORT=${OPTARG};;
?)
echo "错误:未知参数。"
echo "用法:$0 -d example.com -p 8080"
exit 1;;
esac
done
# 检查 DOMAIN 是否已提供
if [ -z "$DOMAIN" ]; then
echo "错误:必须使用 -d 参数指定域名。"
echo "用法:$0 -d example.com -p 8080"
exit 1
fi
# 检查 SERVER_PORT 是否已提供
if [ -z "$SERVER_PORT" ]; then
echo "错误:必须使用 -p 参数指定端口号。"
echo "用法:sudo bash -d example.com -p 8080"
exit 1
fi
FILE="/etc/nginx/sites-available/$DOMAIN"
LINK="/etc/nginx/sites-enabled/$DOMAIN"
# 创建站点配置文件
sudo tee "$FILE" > /dev/null <<EOF
server {
listen 80;
server_name $DOMAIN;
location / {
proxy_pass http://127.0.0.1:$SERVER_PORT;
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;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 300s;
proxy_send_timeout 300s;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 8 256k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 100m;
}
# 日志配置
access_log /var/log/nginx/${DOMAIN}.access.log;
error_log /var/log/nginx/${DOMAIN}.error.log;
}
EOF
# 创建软链接并重启 Nginx
sudo ln -sf "$FILE" "$LINK"
sudo systemctl reload nginx
echo "Nginx 配置已为域名 $DOMAIN 创建,代理到端口 $SERVER_PORT,并已重载服务。"