我正在设置 minikube 来运行通过 ActiveMQ Artemis 进行通信的服务。
为了从其他机器访问服务,我在主机上设置了nginx,它从端口
19000
转发到Ingress Controller端口
server {
listen 19000;
listen [::]:19000;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://192.168.58.2:32076; # Ingress controller port
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
所以到目前为止,这对我有用。现在我已经部署了 ActiveMQ Artemis。
minikube service list
|---------------|------------------------------------|--------------|---------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|---------------|------------------------------------|--------------|---------------------------|
| default | artemis-web | 8161 | http://192.168.58.2:30001 |
我可以通过节点端口使用
curl -L http://192.168.58.2:30001
访问它。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hawtio</title>
<base href='/console/'>
<link id="favicon" rel="icon" type="image/x-icon" href="img/favicon.ico?v=1">
<link rel="stylesheet" href="css/lib-6a1e4ce9ea.css"/>
<link rel="stylesheet" href="css/app-9653e9917c.css"/>
<!-- branding -->
<link id="branding" rel="stylesheet" type="text/css" href="" />
<script src="js/lib-e53c220218.js" defer></script>
<script src="js/app-fafe513f4b.js" defer></script>
</head>
<body>
<hawtio-login></hawtio-login>
</body>
但我似乎无法创建 nginx 服务器或位置映射来从我的主机访问 Web 控制台。
例如添加以下内容:
location /artemis/ {
proxy_pass http://192.168.58.2:30001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
并打电话给
http://myip:19000/artemis/
结果
HTTP ERROR 404 Not Found
URI: /artemis/
STATUS: 404
MESSAGE: Not Found
SERVLET: -
如果我在 19001 上创建一个转发到 30001 的新服务器,也会得到类似的结果。
有趣的是,如果我尝试
console
,因为我想象它会尝试重定向到:8161/console
location /console/ {
proxy_pass http://192.168.58.2:30001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
然后
curl -L http://myip:19000/console/
表示 Failed to connect to myip port 80: Connection refused
这意味着它以某种方式重定向到端口 80。 (这没有在任何地方配置)。
有人设法访问 minikube 内的 Web 控制台吗?
我成功使用ArtemisCloud Operator在minikube上部署ActiveMQArtemis并访问控制台。如果
spec.console.expose
为 true,则操作员创建入口资源,即
apiVersion: broker.amq.io/v1beta1
kind: ActiveMQArtemis
metadata:
name: my-artemis
spec:
console:
expose: true
ingressHost: my-artemis.my-domain.io
$ curl -Lv --proxy http://192.168.49.2:80 http://my-artemis.my-domain.io
我根据您的配置创建了一个 nigix 容器,并且它有效。我只是将 proxy_pass 参数更改为
<MINIKUBE>:80
,即
$ docker run --name my-nginx --rm -it --network host -p 19000:19000 -v ./nginx.conf:/etc/nginx/nginx.conf:ro nginx
$ curl -Lv --proxy http://localhost:19000 http://my-artemis.my-domain.io