配置Web服务器
安装并启动Web服务器
- Apache:
sudo apt update && sudo apt install apache2 php libapache2-mod-php # 安装Apache与PHP模块 sudo systemctl start apache2 && sudo systemctl enable apache2 # 启动并设置开机自启
- Nginx:
sudo apt update && sudo apt install nginx php-fpm # 安装Nginx与PHP-FPM sudo systemctl start nginx php-fpm && sudo systemctl enable nginx php-fpm
配置PHP支持
- Apache:
确保/etc/apache2/mods-enabled/dir.conf
中优先解析PHP文件(如index.php
)。 - Nginx:
编辑站点配置文件(如/etc/nginx/sites-available/default
),在server
块中添加:location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据PHP版本调整路径 }
重启服务:
sudo systemctl restart apache2
或sudo systemctl restart nginx
。
开放防火墙端口
允许HTTP/HTTPS流量
sudo ufw allow 80/tcp # 开放HTTP端口 sudo ufw allow 443/tcp # 开放HTTPS端口 sudo ufw reload # 应用规则
验证防火墙状态
sudo ufw status # 确认80/443端口为ALLOW
配置路由器与公网IP
设置端口转发(Port Forwarding)
- 登录路由器管理界面(通常通过浏览器访问
168.1.1
)。 - 找到 端口转发/虚拟服务器 选项。
- 添加规则:
- 外部端口:
80
(HTTP)或443
(HTTPS) - 内部IP:服务器的局域网IP(如
168.1.100
) - 内部端口:
80
- 协议:
TCP
- 外部端口:
获取公网IP地址
- 在服务器终端执行:
curl ifconfig.me # 显示当前公网IP
- 注意:家庭宽带通常为动态IP,重启路由器可能变更,如需固定IP,需联系ISP购买静态IP服务。
安全加固(关键步骤)
-
使用HTTPS加密
通过Let’s Encrypt免费获取SSL证书:sudo apt install certbot python3-certbot-apache # Apache sudo certbot --apache -d your-domain.com # 按提示操作
(Nginx使用
python3-certbot-nginx
) -
限制敏感目录访问
在Web服务器配置中禁止外网访问敏感路径(如/etc/
):# Apache示例 <Directory "/var/www/html/private"> Require all denied </Directory>
-
更新PHP安全设置
编辑/etc/php/8.1/apache2/php.ini
(版本路径可能不同):expose_php = Off # 隐藏PHP版本信息 allow_url_fopen = Off # 禁用远程文件包含 disable_functions = exec,system,passthru # 禁用危险函数
测试外网访问
- 本地测试:浏览器访问
http://localhost
或http://服务器内网IP
,确认PHP页面正常显示。 - 外网测试:
- 使用手机网络或朋友设备访问
http://你的公网IP
。 - 若无法访问,检查:
- 防火墙是否放行端口(
sudo iptables -L -n
) - 路由器端口转发规则是否正确
- 云服务商安全组(如AWS/Aliyun需额外配置入站规则)
- 防火墙是否放行端口(
- 使用手机网络或朋友设备访问
常见问题解决
-
403 Forbidden:
检查目录权限:sudo chown -R www-data:www-data /var/www/html
确保/var/www/html/index.php
存在。 -
502 Bad Gateway(Nginx):
确认PHP-FPM运行状态:sudo systemctl status php-fpm
检查Nginx配置中fastcgi_pass
路径是否匹配实际sock文件。 -
动态IP变更:
使用DDNS服务(如花生壳)绑定域名,自动更新IP。
让外网访问Linux中的PHP服务需三步:配置Web服务器 → 开放端口与路由器转发 → 安全加固,务必优先启用HTTPS并限制敏感操作,避免服务器暴露风险,对于生产环境,建议结合云防火墙(如Cloudflare)进一步提升安全性。
引用说明:
- Apache官方文档:https://httpd.apache.org/docs/
- Nginx官方配置指南:https://nginx.org/en/docs/
- Let’s Encrypt证书申请:https://certbot.eff.org/
- Linux UFW防火墙手册:https://help.ubuntu.com/community/UFW 基于Ubuntu 22.04 LTS,其他发行版路径可能略有差异。*
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7100.html