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