如何在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)。

Glype Web代理

如果您使用PHP代理,则可以看到正在运行的Web代理等待您输入URL。

PHP代理

现在,通过“加密”启用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代理。 与往常一样,如果您发现这篇文章很有用,请订阅我们的免费新闻通讯以获取更多提示和技巧。

Sidebar