你好,这应该是相当容易回答任何系统pipe理员,问题是,我不是服务器pipe理员,但我必须完成这项任务,我非常接近,但仍然没有设法做到这一点。 这是我的意思,我有两个tomcat实例在machine1和machine2上运行。 人们通常通过访问url访问这些网站:
http://machine1:8080/appName http://machine2:9090/appName
问题是当我设置nginx的域名,即domain.com ,nginx发送请求到http://machine1:8080/和http://machine2:9090/而不是http://machine1:8080/和http://machine2:9090/appName
这是我的configuration(非常基本,因为它可以指出):
upstream backend { server machine1:8080; server machine2:9090; } server { listen 80; server_name www.mydomain.com mydomain.com; location / { # needed to forward user's IP address to rails proxy_set_header X-Real-IP $remote_addr; # needed for HTTPS proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; proxy_max_temp_file_size 0; proxy_pass http://backend; } #end location } #end server
我必须做些什么才能做到以下几点: – 当用户访问mydomain.com – 将他转移到machine1:8080/appName或machine2:9090
谢谢
问题更新:
我觉得像我这样的第一个计时器很复杂。 我将只使用一个实例服务器而不是两个,这里是我的configuration:
server { listen 80; server_name www.mydomain.com mydomain.com; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8080; } }
问题 :
当我访问mydomain.com我得到了那个众所周知的tomcat页面If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations! If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations! 。
如果我手动去mydomain.com/myApp然后一切按预期工作。
题 :
有没有办法让我configuration这个来做到以下几点:
当我input地址栏mydomain.com ,我被转移到mydomain.com/myApp
或者我完全在这种情况下。 有更简单的方法来做到这一点?
更新II:
当我将configuration更改为:
proxy_pass http://localhost:8080/appName/;
该网站看起来像它的工作,但它确实没有。 链接不工作,CSS / JS不加载。
根据你的问题,目前还不清楚哪台机器或者两台机器在目标url中都有“appname”。 假设你的目的地是:
http://machine1:8080/appName http://machine2:9090/appName
我只是在这里拍摄,但我会尝试添加“/ appName”到上游块或代理传递线:
upstream backend { server machine1:8080/appName; server machine2:9090/appName; }
要么
location / { ... proxy_pass http://backend/appName; } #end location
proxy_pass指令的文档可以在这里find。
你只需要一个HTTP 302(redirect)。
rewrite ^/*$ https://www.example.com/appName/ redirect;
正则expression式会捕获https://www.example.com以及https://www.example.com/和https://www.example.com/// 。 新的url将显示给浏览器的用户。
我知道答案迟了5年左右,但是线程被碰撞了,我看到“互联网上有人错了”。