Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
如何使用 NGINX 配置反向代理
#1
NGINX 是 2004 年首次发布的轻量级 Web 服务器,也可以用作反向代理。我们制作了许多关于 NGINX 的教程,最近设置了一个 Node.js 应用程序,它也使用 NGINX 作为其反向代理,但它使用 NPM 包来生成应用程序特定的配置。
在本教程中,我们将配置 NGINX 以从托管在本地端口上的 Apache 后端进行反向代理,这只是一个示例。一般来说,如果您有一个硬编码的应用程序(如 Plex、Webmin 等)侦听非默认默认端口(即不在端口 80 / 443),或者您已经在使用 HTTP 端口,则反向代理很有帮助使用 NGINX Web 服务器,并且不能将这些端口分配给另一个应用程序。
有时,由于自定义重写支持,Web 应用程序仅与特定的 Web 服务器(如 Apache)兼容,并且 NGINX 因其低内存占用和缓存静态内容的能力而被用于前端。在 VestaCP 的默认安装中也可以看到这种设置。
要求:
  • 我们将在本教程中使用 Ubuntu 18.04,但也可以在 Debian 或 CentOS 中进行类似的操作。
  • 一个域名或子域的A记录指向VPS的IP。
  • 我们将使用 nano 文本编辑器,您也可以使用 vim 或选择在 Notepad++ 等本地编辑器上通过 SFTP 编辑配置。
第 1 步:安装 Apache 作为后端
同样,我们仅作为示例安装 Apache,您的后端可以根据要求是任何应用程序。
让我们用apt安装apache2
Code:
apt install apache2 -y
安装后,apache 网络服务器现在应该侦听端口 80,我们可以通过转到我们的服务器 IP 或我们指向服务器 IP 的域来验证它。
https://cdn.diamondzxd.com/index.php/s/8...kr/preview
更改 Apache 的端口
由于 HTTP 端口将来会被 NGINX 服务器接管,我们将更改 apache 的端口,我们可以通过编辑 Apache 的 ports.conf 文件来更改 apache 的端口:
Code:
nano /etc/apache2/ports.conf
我们将默认 HTTP 端口更改为 8080 和 8443
Code:
Listen 8080 <IfModule ssl_module> Listen 8443 </IfModule> <IfModule mod_gnutls.c> Listen 8443 </IfModule>
现在,让我们重新启动 apache 网络服务器以查看更改。
Code:
service apache2 restart
如您所见,apache 现在侦听端口 8080
https://cdn.diamondzxd.com/index.php/s/s...FT/preview
第 2 步:安装 NGINX 网络服务器
Code:
apt install nginx -y
当您安装 NGINX 并转到您的服务器的 IP 时,您将再次看到默认的 Apache 页面。但别担心,这是因为两个网络服务器共享 /var/www/html 目录,我们可以从 NGINX 的配置文件 /etc/nginx/sites-enabled/default 中验证:
Code:
root /var/www/html;
https://cdn.diamondzxd.com/index.php/s/J...M8/preview
它不是显示 index.nginx-debian.html,而是显示 index.html,因为它在配置的目录索引中是第一个。
第 3 步:向 Apache 添加额外的标头
尽管这对于实现我们正在做的事情不是必需的,也不是必需的,但只是为了演示,我们将添加一个 Additional “Serverd-By : Backend” 标头,以查看内容实际上是由我们的后端提供的,甚至反向代理后将显示原始标题。
为此,只需将以下行添加到 apache2.conf
Code:
nano /etc/apache2/apache2.conf <IfModule mod_headers.c> <Directory /> Header always set Served-By “Backend” </Directory> </IfModule>
激活 apache 的 headers mod 并重新启动 apache 网络服务器。
Code:
a2enmod headers service apache2 restart
让我们转到 SERVER_IP:8080 并验证这些标头。
https://cdn.diamondzxd.com/index.php/s/Y...tD/preview
如您所见,存在 Served-By : Backend 标头。
第 4 步:配置反向代理
现在后端已经设置好了,是时候最终配置反向代理了。
首先,我们将删除默认配置文件。
Code:
unlink /etc/nginx/sites-enabled/default
然后,将我们的新配置添加到 /etc/nginx/sites-enabled 目录
Code:
nano /etc/nginx/sites-enabled/reverse_proxy
Code:
server { listen  80; server_name  DOMAIN_NAME; location / { proxy_pass      http://YOUR_SERVER_IP:8080; } }
将 DOMAIN_NAME 替换为您希望使用的实际 FQDN,并将 YOUR_SERVER_IP 替换为服务器 IPTongueORT 或后端位置。
然后,最后重新启动 NGINX 网络服务器。
Code:
service nginx restart
验证代理
让我们转到我们想要的域名,我们会在 /var/www/html 目录中找到正在服务的 index.html 文件:https ://cdn.diamondzxd.com/index.php/s/T4WG6RNsgq9E7DB/preview
好的,我们看到了 index.html,但它真的是由 Our Backend 提供的吗?为了验证这一点,让我们检查标题:https ://cdn.diamondzxd.com/index.php/s/pmBCxZWe8sFDeyQ/preview
事实上,我们在 Apache 中设置的 Served-By : Backend 标头现在正在通过 NGINX 显示,这可以确认反向代理正在工作!
您也可以尝试停止 Apache(后端),然后查看以下内容
Code:
service apache2 stop
https://cdn.diamondzxd.com/index.php/s/R...Ff/preview
正如预期的那样,由于后端现在已关闭,我们收到 502 Bad Gateway 错误,这进一步验证了内容是通过反向代理 J 提供的
让我们重新启动后端,
Code:
service apache2 start
https://cdn.diamondzxd.com/index.php/s/B...jw/preview
网站又恢复了!
结论
我们已经向您展示了如何在 Ubuntu 18.04 VPS 上使用 NGINX over Apache(或任何后端)配置反向代理。您可以在您的 VPS 上与您的其他 NGINX 网站并行执行此操作。
默认联系方式为telegram,需要微信号请留言。
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  如何使用 Ubuntu VPS 构建自己的网络爬虫 netflix 0 468 09-11-2023, 06:22 PM
Last Post: netflix

Forum Jump:


Users browsing this thread: 1 Guest(s)