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

