我在配置 nginx 时遇到问题,我在网上搜索了解决方案,我有一些零碎的东西,但我仍然无法提出正确的配置。
我已经注册了一个域,比方说 - www.example.com。我已经在注册商网站上配置了所有内容,ping www.example.com 和 www.*.example.com 成功。
我的机器上运行着 Apache Tomcat,监听端口 8080。我想设置动态 proxy_pass。因此,如果我在 tomcat 中运行应用程序 MyApp 并可通过 localhost:8080/MyApp 访问,我希望能够使用 www.MyApp.example.com 访问它,所以基本上子域将是应用程序在 tomcat 中的名称。
这是我的 nginx 配置:
server {
server_name ~^(www\.)?(?<sub_domain>.+)\.example\.com$;
listen 80;
location / {
proxy_pass http://localhost:8080/$sub_domain/;
}
}
Run Code Online (Sandbox Code Playgroud)
当我访问 www.myapp.example.com 时,我被重定向到http://localhost:8080/myapp- 我的意思是我最终进入了http://localhost:8080/myapp我的浏览器。
但是,如果我将 nginx 设置中的正则表达式更改为:
server {
server_name www.myapp.example.com myapp.example.com
listen 80;
location / {
proxy_pass http://localhost:8080/myapp/;
}
}
Run Code Online (Sandbox Code Playgroud)
然后一切都像魅力一样。我知道它必须对解析器做些什么,我已经尝试将解析器放在 nginx 中,但它没有任何改变。
我在这里缺少什么?
//编辑:
这是我的配置。我仍然被重定向到 www.myapp.example.com/myapp/login 而不是 www.myapp.example.com/login。我已经改变了正则表达式,还是一样。
http {
upstream backend { …Run Code Online (Sandbox Code Playgroud)