当我尝试在本地网络上使用 nginx 反向代理配置 Jira 7.3.5 时,我遇到了一个小问题。我将 cptactionhank jira docker 镜像与 jwilder nginx-proxy docker 镜像一起使用。一切似乎都运行良好,但自从我更新到版本 7.3.5 以来,Jira 报告了“小工具的基本 URL”问题。打开 Jira 配置面板的支持工具部分时,它显示“JIRA 无法通过配置的基本 URL 访问自身”。结果是仪表板上的小工具没有报告其正确的名称。
这似乎与将流量通过端口 8080 重新路由到端口 80 有关。当我将 Jira 中的基本 URL 设置为端口 8080 时,问题就消失了,但不幸的是,我的所有 jira URL 都将以端口 8080 为后缀。我尝试将 X_PROXY_PORT 设置为 80,并尝试在我的 docker-compose 环境中设置 VIRTUAL_PORT,但这些似乎都没有太大变化。我希望这里有人有这种设置的经验?
这是我的 jira docker-compose.yml 文件:
version: '2'
services:
jira:
container_name: jira
restart: always
image: cptactionhank/atlassian-jira-software:latest
ports:
- "8080:8080"
volumes:
- jira-data:/var/atlassian/jira
- jira-logs-data:/opt/atlassian/jira/logs
dns: 192.168.2.4
expose:
- "8080"
hostname: jira.internal.mydomain.com
network_mode: bridge
environment:
- VIRTUAL_HOST=jira.internal.mydomain.com
volumes:
jira-data:
external: true
jira-logs-data:
external: true
这是我的 nginx docker-compose.yml 文件
version: '2'
services:
nginx:
container_name: nginx
restart: always
image: jwilder/nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /srv/nginx-proxy/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
dns: 192.168.2.4
network_mode: bridge
答案1
那么,您让 jira 监听端口 8080,并让 nginx 将端口 80 路由到 8080?对吗?
听起来 jira 没有使用代理与自己通信。我猜这是因为它尝试了错误的 IP 地址,而代理没有监听该地址。这很容易用“ss -tln”或“netstat -tln”检查
希望这能有所帮助 -Dylan
更新:
嗯,看起来好像您在端口 8080 和端口 8005 上都监听了一些东西,但没有监听端口 80。这让我觉得 nginx 配置不正确。或者,您是否在容器外将端口 8005 发布为端口 80?这会导致问题,因为在容器内部,端口 80 什么都不是。我认为您可以在容器中的 iptables 中设置一个简单的转发规则,以将端口 80 本地重定向到端口 8005。这可能会解决问题。或者只需将 nginx 放在端口 80 上并将其发布为端口 80。
答案2
我似乎找到了这个问题的解决方案。禁用 jira docker-compose 文件中的“expose: "8080"”和“hostname: jira.internal.mydomain.com”行似乎可以确保所有路由都按原样完成。我设置了 jira 基本网址只是为了http://jira.internal.mydomain.com一切似乎都正常。