nginx设置隐藏真实端口的一个问题

当前nginx部署的jenkins的路径是/

可以正常访问:端口1993

image.png

我想把jenkins用nginx区代理

之前是访问http://iam01.oneaccess.com:1993/

现在访问http://iam01.oneaccess.com/jenkins

实质上是访问http://iam01.oneaccess.com:1993/

于是在nginx中配置了一下

  upstream my-jenkins {
    #jekins
    server iam01.oneaccess.com:1993 max_fails=2 fail_timeout=15;
  }

...

server{
  listen 80;
  server_name  iam01.oneaccess.com;
   proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location /jenkins {
        proxy_pass http://my-jenkins;
    }
}

这样设置有个问题,访问项目的静态资源走的是iam01.oneaccess.com/static 加载资源会出问题

请问怎么解决?

如果用 rewrite

image.png

倒是可以达到效果 但是地址栏会直接变成http://iam01.oneaccess.com:1993

没有达到我的预期

阅读 4.2k
3 个回答

官方的配置参考就有 https://www.jenkins.io/doc/bo...

而且也明确说了你没办法做到重写一个不同的prefix,你必须跟jenkins后端的prefix保持一致。也就是你期望通过/jenkins访问,那么你必须设置jenkins后端也加上这个prefix。具体的配置在jenkins的配置文件就有

写在回答之前,

你这个操作叫反向代理,反向代理在电脑网络中是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。反向代理的主要作用为...... 参考下维基百科

因为每个WEB应用程序都有上下文访问路径(叫Context Path), 按照你的配置,Context Path是"/" 所以Jenkins访问时也使用的是/static,可以通过参数--prefix=/jenkins设置context path为jenkins. 参考Reverse proxy - Nginx

Set the context path by modifying the jenkins.xml configuration file and adding --prefix=/jenkins to the <arguments> entry.

如果你使用独立的web应用服务器入tomcat,应该把jenkins.war 扔到webapps进去就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题