如何在nginx上托管多个站点,其中包含相同的域(FQDN)

时间:2020-02-23 14:41:05  来源:igfitidea点击:

介绍

"竭尽全情的事情是什么,是高尚的"

如果我们希望分享相同的FQDN,例如API.theitroad.com以服务多个或者服务API,那么这将为我们提供帮助。

如果我们在环境中的不同服务器上有两个站点,例如销售和会计,客户需要在浏览器上执行以下操作以访问不同的。

To Access Sales site
https://api.theitroad.com/sales
To Access Accounts site
https://api.theitroad.com/accounts

正如我们所看到的,我们使用相同的FQDN来提供由/销售和/会计区分的不同。
如果环境中有一个,这将为我们提供更多公共IPS和防火墙规则。

我们希望我们已经安装了nginx已安装并运行。

--- Install Nginx on Ubuntu/Debian -----
$sudo apt -y install nginx
$sudo systemctl enable --now nginx
--- Install Nginx on CentOS/Fedora -----
$sudo yum -y install nginx
$sudo systemctl enable --now nginx
--- Install Arch Linux/Manjaro -----
$sudo pacman -S nginx
$sudo systemctl enable --now nginx

第1步:修改主nginx配置文件

打开nginx默认配置文件并在HTTP部件中添加以下行。
确保它在HTTP Crly括号内。

http {
....
......
include /etc/nginx/sites.d/*.conf;
}

这在/etc/nginx/sites.d/中添加了配置文件,用于nginx读取和行动它们

第2步:创建主站点配置文件

让我们现在在/etc/nginx/sites.d中添加我们的主站点fqdn配置文件

$sudo vim api.theitroad.com
server {
  listen 80;
  server_name  api.theitroad.com;
  return 301 https://api.theitroad.com$request_uri;
}
 
server {
  listen 443 ssl http2;
  server_name api.theitroad.com; 
  modsecurity_transaction_id "api.theitroad.com-$request_id"; 
  access_log           /var/log/nginx/test-api-access.log; 
  error_log            /var/log/nginx/test-api-error.log; 
  include              /etc/nginx/default.d/api.theitroad.com/*.conf;
}

特定站点将位于/etc/nginx/default.d/api.theitroad.com/,我们可以注意到,已包含在我们的配置文件中。

第3步:创建站点路由配置

现在在上面的配置中创建/etc/nginx/default.d/api.theitroad.com/目录中创建。
在此设置中,我们将为销售创建一个

cd /etc/nginx/default.d/api.theitroad.com

此配置将流量将流量重定向到服务器1(192.168.55.60)托管销售站点聆听端口8443

$sudo vim sales.conf
location /sales/{
  proxy_http_version 1.1;
  proxy_pass https://192.168.55.60:8443/sales/;
  proxy_cache_bypass $http_upgrade;
  proxy_set_header Connection 'upgrade';
  proxy_set_header Upgrade $http_upgrade;
}

此配置将流量重定向到服务器1(192.168.55.63)托管8080端口的销售站点

$sudo vim accounts.conf 
location /accounts/{
   proxy_http_version 1.1;
   proxy_pass https://192.168.55.63:8080/accounts/;
   proxy_cache_bypass $http_upgrade;
   proxy_set_header Connection 'upgrade';
   proxy_set_header Upgrade $http_upgrade;
}

这就是我们需要将Nginx配置为代理或者API使用相同的FQDN。