主题评价:
  • 0 次(票) - 平均星级: 0
  • 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
代码:
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 的端口:
代码:
nano /etc/apache2/ports.conf
我们将默认 HTTP 端口更改为 8080 和 8443
代码:
Listen 8080

<IfModule ssl_module>

Listen 8443

</IfModule>

<IfModule mod_gnutls.c>

Listen 8443

</IfModule>
现在,让我们重新启动 apache 网络服务器以查看更改。
代码:
service apache2 restart
如您所见,apache 现在侦听端口 8080
https://cdn.diamondzxd.com/index.php/s/s...FT/preview
第 2 步:安装 NGINX 网络服务器
代码:
apt install nginx -y
当您安装 NGINX 并转到您的服务器的 IP 时,您将再次看到默认的 Apache 页面。但别担心,这是因为两个网络服务器共享 /var/www/html 目录,我们可以从 NGINX 的配置文件 /etc/nginx/sites-enabled/default 中验证:
代码:
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
代码:
nano /etc/apache2/apache2.conf

<IfModule mod_headers.c>

<Directory />

Header always set Served-By “Backend”

</Directory>

</IfModule>
激活 apache 的 headers mod 并重新启动 apache 网络服务器。
代码:
a2enmod headers

service apache2 restart
让我们转到 SERVER_IP:8080 并验证这些标头。
https://cdn.diamondzxd.com/index.php/s/Y...tD/preview
如您所见,存在 Served-By : Backend 标头。
第 4 步:配置反向代理
现在后端已经设置好了,是时候最终配置反向代理了。
首先,我们将删除默认配置文件。
代码:
unlink /etc/nginx/sites-enabled/default
然后,将我们的新配置添加到 /etc/nginx/sites-enabled 目录
代码:
nano /etc/nginx/sites-enabled/reverse_proxy
代码:
server {

listen   80;

server_name  DOMAIN_NAME;

location / {

proxy_pass      http://YOUR_SERVER_IP:8080;

}

}
将 DOMAIN_NAME 替换为您希望使用的实际 FQDN,并将 YOUR_SERVER_IP 替换为服务器 IPTongueORT 或后端位置。
然后,最后重新启动 NGINX 网络服务器。
代码:
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(后端),然后查看以下内容
代码:
service apache2 stop
https://cdn.diamondzxd.com/index.php/s/R...Ff/preview
正如预期的那样,由于后端现在已关闭,我们收到 502 Bad Gateway 错误,这进一步验证了内容是通过反向代理 J 提供的
让我们重新启动后端,
代码:
service apache2 start
https://cdn.diamondzxd.com/index.php/s/B...jw/preview
网站又恢复了!
结论
我们已经向您展示了如何在 Ubuntu 18.04 VPS 上使用 NGINX over Apache(或任何后端)配置反向代理。您可以在您的 VPS 上与您的其他 NGINX 网站并行执行此操作。
默认联系方式为telegram,需要微信号请留言。
回复


可能相关的主题..。
主题: 作者 回复数: 人气: 最近发表
  如何使用 Ubuntu VPS 构建自己的网络爬虫 netflix 0 66 09-11-2023, 06:22 PM
最近发表: netflix

论坛跳转:


正在浏览该主题的用户: 2 个游客