我查看了nginx 上有多个网站,一个 IP但我的情况有点不同。
我想在同一台服务器(相同 IP 地址)但在不同的子域上托管三个网站(一个用于 thelounge,另外两个是 ASP.NET Core Web 应用程序,分别监听不同的端口(5002,分别是 5003))。
因此,我从 namecheap 购买了域名,并为休息室配置了域名,如图所示:
我一步一步地遵循了 Thomas Ward 的回答,但我不知道 .net core web 应用程序会监听不同的端口。我在 /etc/systemd/system/myapp.service 中为 .net core 应用创建了服务,即 kestrel 服务
[Unit]
Description=my app
[Service]
WorkingDirectory=/home/anuser
ExecStart=/usr/bin/dotnet /home/anuser/MyApp.Web.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=info-editor
User=anuser
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target
我激活了上述服务并运行了它。一切正常,网站已上线。
当尝试访问 editor.xxx.xxx 时,它会重定向到第一个网站(休息室)。
thelounge 的 nginx 配置(chat.xxxxx.conf):
server {
server_name chat.xxxxx.xxxxx;
set $upstream 127.0.0.1:9000;
location / {
proxy_pass_header Authorization;
proxy_pass http://$upstream;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
...
}
以及.net core web 应用程序(editor.xxxxx.conf)
server {
server_name editor.xxxxx.xxxx
set $upstream 127.0.0.1:5002;
location / {
proxy_pass_header Authorization;
proxy_pass http://$upstream;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off;
}
listen 80;
}
当然,我使用ln
命令来建立到 /sites-enabled 的符号链接
我也重启了 nginx。但仍然重定向到 thelounge