我想使用 Nginx 根据请求的子域重定向到特定的应用程序。
目前,我只有一个应用程序,它有自己的服务器监听端口 3080。我希望子域gitea.mydomain.com
重定向到正在监听的应用程序服务器localhost:3080
。
/etc/nginx/sites-available
我创建了一个包含以下内容的文件:
server {
listen 80;
server_name gitea.mydomain.com;
location / {
proxy_pass http://localhost:3080;
}
}
嗯,它工作得太好了,我可以尝试任何作为子域名,或者根本没有子域名,然后我就被重定向到应用程序。
对于 DNS,我有两个 A 记录,一个用于将我的域名重定向到我的 IP 地址,另一个用于将 *.mydomain.com 重定向到我的 IP 地址。
这难道不是我应该做的子域名重定向吗?
感谢你们的帮助
编辑 Pothi Kalimuthu 的回答解决了我的问题,但我还有一个后续问题。为什么当我告诉 Nginx 仅重定向子域时,它却重定向到应用程序?我预计其他请求会失败。
答案1
您可能需要添加一个捕获所有服务器块来处理每个其他子域和其他域,例如example.net
或example.org
...
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
注意事项1:请务必重新加载或重新启动 Nginx 以应用更改。
注意 #2:请注意,上面的代码块基本上没有返回任何内容。错误代码 444 是 Nginx 特定的错误代码,表示“无响应”。参考:https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#nginx