如何在Ubuntu 16.04 VPS上设置自己的Web代理
本教程向您展示如何在Ubuntu 16.04上设置自己的Web代理。 Web代理是一个网站,用户在其中输入特定的URL来取消阻止该网站。 有许多Web代理脚本可用于设置自己的Web代理。 糖 和 PHP代理 将在本教程中使用。 糖 是一个非常流行的Web代理脚本,并且 PHP代理 是一个很好的选择。 您可以选择其中之一。 在我的测试中,PHP-Proxy速度更快,并且可以与Facebook,Twitter和YouTube等受欢迎的网站更好地协作,因为它正在积极更新。 我们将看到如何使用Apache / Nginx设置它们并通过Let’s Encrypt启用HTTPS。
通常,我使用Shadowsocks代理和OpenConnect VPN绕过Internet审查,但是这两个工具有可能在我的国家被阻止。 Web代理是一种很好的备份方法,因为它没有SOCKS代理和VPN的任何特征。 在Internet防火墙看来,这只是正常的HTTPS流量。 在线有成千上万的免费Web代理。 缺点是,一旦这些公共Web代理广为人知,它们就很容易被阻止。 设置自己的私有Web代理的优点是只有您知道它的存在。
先决条件
要遵循本教程,您将需要:
- 一个VPS(虚拟专用服务器),可以免费访问被阻止的网站(您所在的国家或Internet过滤系统之外)和域名。 对于VPS,我建议使用Vultr。 他们以每月2.5美元的价格提供512M内存的高性能KVM VPS,非常适合您的私有代理服务器。
- 安装Web服务器和PHP
您还需要一个域名,因此您将能够添加HTTPS加密来保护您的网络流量。 我建议从NameCheap购买域名,因为价格低廉,并且终身免费提供Whois隐私保护。
步骤1:安装Web服务器和PHP
SSH进入Ubuntu 16.04 VPS。 如果您想将Nginx用作Web服务器,请通过执行以下命令来将Nginx和PHP7用作nstall。
sudo apt install nginx php7.0-fpm php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
如果您想将Apache用作Web服务器,请运行
sudo apt install apache2 php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-mbstring php7.0-xml php7.0-zip
步骤2:下载Glype或PHP-Proxy
糖
通过运行以下命令下载Glype。
wget https://www.php-proxy.com/download/glype-1.4.15.zip
提取到 /var/www/proxy/
目录。
sudo apt install unzip sudo mkdir -p /var/www/proxy/ sudo unzip glype-1.4.15.zip -d /var/www/proxy/
组 www-data
(Web服务器用户)作为所有者。
sudo chown www-data:www-data /var/www/proxy/ -R
PHP代理
我们可以使用Composer下载PHP-Proxy。 从Ubuntu 16.04存储库安装Composer。
sudo apt install composer
然后将PHP-Proxy下载到 /var/www/proxy/
目录。
sudo mkdir -p /var/www/proxy/ sudo composer create-project athlon1600/php-proxy-app:dev-master /var/www/proxy/
组 www-data
(Web服务器用户)作为所有者。
sudo chown www-data:www-data /var/www/proxy/ -R
步骤3:配置Web服务器
在此步骤中,我们需要为Web代理创建一个Nginx服务器块或Apache虚拟主机。
创建Nginx服务器块
在下面创建一个服务器块 /etc/nginx/conf.d/
目录。
sudo nano /etc/nginx/conf.d/web-proxy.conf
将以下行复制并粘贴到文件中。 更换 proxy.example.com
您的真实域名。 不要忘记在DNS管理器中设置A记录。
server { listen 80; server_name proxy.example.com; root /var/www/proxy/; index index.php; location / { try_files $uri $uri/ /index.php; } location ~ .php$ { fastcgi_pass unix:/run/php/php7.0-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } }
保存并关闭文件。 然后测试Nginx配置。
sudo nginx -t
如果测试成功,请重新加载Nginx以使更改生效。
sudo systemctl reload nginx
创建Apache虚拟主机
在以下位置创建Apache虚拟主机 /etc/apache2/sites-avaialable/
目录。
sudo nano /etc/apache2/sites-available/web-proxy.conf
将以下行复制并粘贴到文件中。 更换 proxy.example.com
您的真实域名。 不要忘记在DNS管理器中设置A记录。
<VirtualHost *:80> ServerName proxy.example.com DocumentRoot /var/www/proxy ErrorLog ${APACHE_LOG_DIR}/proxy.error.log CustomLog ${APACHE_LOG_DIR}/proxy.access.log combined </VirtualHost>
保存并关闭文件。 然后启用此虚拟主机。
sudo a2ensite web-proxy.conf
重新加载Apache以使更改生效。
sudo systemctl reload apache2
Web界面
现在访问 proxy.example.com
在您的网络浏览器中。 如果您使用Glype,那么您将被重定向到管理控制台(proxy.example.com/admin.php
)。
如果您使用PHP代理,则可以看到正在运行的Web代理等待您输入URL。
现在,通过“加密”启用HTTPS。
步骤4:通过“让我们加密”为Web代理启用HTTPS
通过执行以下命令,我们可以从官方PPA安装Let’s Encrypt客户端(certbot)。
sudo apt install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt update sudo apt install certbot
Nginx的 用户还需要安装Certbot Nginx插件。
sudo apt install python-certbot-nginx
使用Nginx插件启用HTTPS。
sudo certbot --nginx --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
阿帕奇 用户需要安装Certbot Apache插件。
sudo apt install python-certbot-apache
使用Apache插件启用HTTPS。
sudo certbot --apache --agree-tos --redirect --staple-ocsp -d proxy.example.com --email your-email-address
如果您收到以下错误消息。
Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
请在“让我们加密”论坛上查看此帖子以修复它。
成功安装证书后,请在Web浏览器中刷新代理以使用HTTPS。
(可选)将您的Web代理置于CDN之后
互联网检查器至少可以通过三种方式阻止网站:
- 阻止网站的IP地址。
- 劫持DNS响应以为最终用户提供错误的IP地址。
- 通过查看服务器名称指示(SNI)来阻止TLS连接
如果您担心Web代理被Internet审查员阻止,则可以将Web代理置于Cloudflare之类的CDN(内容交付网络)之后。 这样,您的服务器IP地址将被隐藏,并且如果Internet审查员决定阻止Cloudflare IP地址,则将带来附带损害,因为还有许多其他网站也在使用相同的IP地址。 这将使Internet审查员在这样做之前要三思而后行。
为防止DNS毒害,最终用户应使用基于TLS的DNS或基于HTTPS的DNS。 为防止泄漏SNI信息,网站应使用加密的SNI。
结论
而已! 我希望本教程可以帮助您在Ubuntu 16.04上创建自己的Web代理。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。