tomcat - nginx 重写以隐藏应用程序名称

标签 tomcat nginx

这个问题可能会被问很多次,我一直在看书,但还是得不到我想要的。

我有一个应用程序在 172.17.1.10:8080/myapp 中运行 我想设置 nginx 反向代理以仅使用 sub.domain.com 访问该应用程序,隐藏地址栏中的“myapp”。

我当前的设置是:

server{
        listen 80;
        server_name sub.domain.com;
        location /myapp {
                rewrite ^/myapp(.*) /$1 break;
                proxy_pass http://172.17.1.10:8080;
                proxy_redirect off;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP      $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                include /etc/nginx/proxy_params;
        }

}

但我一直在用 sub.domain.com 查看 Nginx 索引页面,用 sub.domain.com/myapp 查看 tomcat 索引页面...我是什么不见了?

最佳答案

看起来你甚至不需要重写这种情况,这应该足够了:

更新位置:

server{
    listen 80;
    server_name sub.domain.com;
    location / { 
            proxy_pass http://172.17.1.10:8080/myapp/;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP      $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            include /etc/nginx/proxy_params;
    }

这是一个服务器模拟你的后端的例子,

你的 172.17.1.10:8080 将是我的 localhost:8088:

server {
    listen       8088;

    location /myapp {      
      # if the "login" request param = true, will simulate a redirect to a login page to proxy;
      if ($arg_login = "true" ){
          return 301 http://sub.domain.com/login;            
      }   

      #otherwise return normal content 
      return 200 "$request_uri    OK";        
    }

    #Simulated login page
    location /myapp/login {        
      echo "Login page: Provide credentials!";        
    }

所以,(使用浏览器)如果我请求这个:http://sub.domain.com/api/test

我会得到:

/myapp/api/test OK

而如果我请求:http://sub.domain.com/api/test?login=true 我会得到:

Login page: Provide credentials!

关于tomcat - nginx 重写以隐藏应用程序名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27339118/

相关文章:

linux - 如何为nginx服务编写upstart脚本?

python - 为什么使用 Nginx 运行 Flask 需要 WSGI 包装器?

java - RESTEasy 启用 GZIP 支持?

java - 将 CAS 集成到 Java 动态 Web 项目中

jsp - tomcat - 计时器内存泄漏

docker - 我需要在 NGINX 官方 Docker 的镜像中进行哪些更改才能拥有 set-misc-nginx 模块?

node.js - 如何配置 Nginx 和 Node 以使用 SSL?

java - IntelliJ 调试断点不适用于 Tomcat 运行配置

java - Tomcat Java 线程在 futex() 调用上旋转

windows - Windows 上的 Nginx - 无法绑定(bind)任何端口