在搜索了网络,尤其是堆栈溢出之后,我现在决定在这个平台上写我的第一篇文章。
我正在Linux Mint 20下的项目笔记本上运行OCP CRC。我创建了一个基本的类似 hello 的 Python/Flask 应用程序,运行得很好。从笔记本本地调用此应用程序当然没有问题 hello.apps-crc.testing.
为了使这个应用程序在我的本地网络中可用,我在笔记本上安装了ha代理和bind9。bind9定义了crc.testing和apps-crc.testing域,然后指向ha代理绑定到的虚拟网络设备,将所有请求从局域网转发到本地OCP CRC。
然后,这个本地DNS由我的中央本地DNS引用,因此这两个域都可以在本地网络中的任何地方解析。
我不得不把它弄得复杂一些,因为这个项目笔记本也应该可以单独用于演示。然后,它还提供了一个WiFi接入点和一个dhcpd来连接客户机器。
我使用虚拟网络设备来保持一些整洁,因为在虚拟机中笔记本上也有一些其他服务在运行-每个服务都有自己的虚拟网络接口,然后由haproxy绑定。。。
到目前为止一切都很好-工作得很好,两个域的所有连接(80、443、6443)都可以在整个LAN上工作,以便通过Web控制台和oc工具访问集群。
现在,该应用程序应该可以从互联网访问。所以我有一个公共领域——我们称之为mydomain。org-在这里我定义了一个子域ocp4apps.mydomain。org,它指向DSL路由器,该路由器将所有传入流量重定向到充当反向代理的nginx实例。
这适用于在我的 LAN 中的不同主机上运行并通过所述 nginx 反向代理分配给相应子域的许多应用程序。
现在,我定义了一个站点ocp4apps.mydomain.org,它应该将对https://ocp4apps.mydomain.org/hello的外部调用代理到内部主机hello.apps-crc.testing
接下来发生的是,在远程浏览器上,https://ocp4apps.mydomain.org/hello被https://hello.apps-crc.testing/hello取代,这当然没有任何意义。
我猜,我的问题不是CRC,而是我的nginx配置。不幸的是,我是一个开发人员,而不是网络专家:-(
下面是配置文件的摘录——尽可能简短:
NGINX配置
server {
server_name ocp4apps.mydomain.org;
listen 80;
# redirect all incoming requests to https...
return 301 https://ocp4apps.mydomain.org$request_uri;
}
server {
server_name ocp4apps.mydomain.org;
listen 443 ssl;
root /var/www/html;
error_page 403 404 500 502 503 504 /error.html;
location / {
# doesnt matter in this scenario
}
location /hello {
set $hello_host hello.apps-crc.testing;
proxy_pass http://$hello_host;
}
}
我在我所有的站点定义上使用这种将所有内容重定向到https的模式,到目前为止效果很好。从https代理到内部超文本传输协议对其他站点也没有问题。我将后端主机名放在一个变量中,以避免后端离线时出现问题。https所需的tgh证书是为整个反向代理及其所有站点全局定义的——运行良好。
羟基构型
frontend crc_apps
bind 192.168.2.11:80
option tcplog
mode tcp
default_backend crc_apps
backend crc_apps
mode tcp
balance roundrobin
option ssl-hello-chk
server crcserver 192.168.130.11:80 check
frontend crc_apps_ssl
bind 192.168.2.11:443
option tcplog
mode tcp
default_backend crc_apps_ssl
backend crc_apps_ssl
mode tcp
balance roundrobin
option ssl-hello-chk
server crcserver 192.168.130.11:443 check
frontend crc_api
bind 192.168.2.11:6443
option tcplog
mode tcp
default_backend crc_api
backend crc_api
mode tcp
balance roundrobin
option ssl-hello-chk
server crcserver 192.168.130.11:6443 check
如前所述,这部分工程完美无缺...我本可以将CRC的ip地址放在一个环境变量中,但是因为它从不改变,所以这样做也可以。
然后,我尝试将这一行添加到nginx配置中的位置定义中:
proxy_set_header Host $host;
到目前为止,这改变了行为,我现在显然得到了CRC的响应,请求的应用程序不可用,因为主机不存在:
来自CRC的错误消息
所以我尝试为外部域设置一个入口:
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
name: overall-project-ingress
namespace: overall-project-name
spec:
rules:
- host: ocp4apps.mydomain.org
http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name: hello-service
port:
number: 8080
这会导致一条新的错误消息,即在服务器上找不到请求的URL(可能是因为没有TLS定义,而外部调用被nginx重新路由到https?)
我迷路了,真的很感激一些有用的提示,可以从互联网上访问crc中运行的应用程序:-)
最好的问候
阿克塞尔
我想我解决了这个问题-但老实说,我不太明白为什么:-)
我更换了
server {
server_name ocp4apps.mydomain.org;
# ...
location /hello {
set $hello_host hello.apps-crc.testing;
proxy_pass http://$hello_host;
}
}
与
server {
server_name ocp4apps.mydomain.org;
# ...
location /hello/ {
set $hello_host hello.apps-crc.testing;
proxy_pass http://$hello_host/;
}
}
所以,基本上我只是添加了这些尾随斜杠 - 这确实起作用了,但我很高兴理解为什么。我瞥见了,这可能与文本替换有关,但我不明白... :-)
如果有人能指出一本关于所有这些配置如何真正工作的好手册,我会非常感激...
问候
阿克塞尔
我有一个包含3个容器的项目:反向代理容器(jwilder-nginx-proxy image),前端容器(nginx容器服务于Vue js开发和捆绑的应用程序)和后端容器(node6容器服务于NodeJs ExpressJs应用程序)。后端和前端都在反向代理的后面。下面是它在我的本地主机中应该如何工作: 访问http://localhost:80/并为gui服务 gui应该通过http://loc
在主机上,端口4012上有docker容器,而在docker容器中,webapp运行在端口3000上(0.0.0.0:4012->3000/tcp),因此要访问webapp,只需访问http://hostname:4012,网页显示良好。我希望能够从浏览器转到http://hostname/metrics来运行相同的网页。 它不像获取index.html那样将/metrics追加到资产中...我在
本文向大家介绍详解Nginx反向代理WebSocket响应403的解决办法,包括了详解Nginx反向代理WebSocket响应403的解决办法的使用技巧和注意事项,需要的朋友参考一下 在Nginx反向代理一个带有WebSocket功能的Spring Web程序(源代码地址 )时,发现访问WebSocket接口时总是出现403响应,Nginx的配置参考的是 官方文档 : 唯一不同的是我们的Nginx
问题内容: 我有一个在Docker外部在端口5000上运行的应用程序。我试图通过Dockercompose在nginx中运行反向代理,但无法与主机的端口5000通信。在我的docker-compose.yml文件中,我具有: 当我尝试运行此命令时,我得到: 如果我注释掉,我得到: 如何从Docker Nginx容器连接到主机中已运行的应用程序? 编辑: 我的nginx.conf文件 当我尝试卷曲l
本文向大家介绍nginx正向代理与反向代理详解,包括了nginx正向代理与反向代理详解的使用技巧和注意事项,需要的朋友参考一下 正向代理 就是假设有一个内网 内网有两台机器,这两台机器只有 a 可以上网 b 不能上网,但是 a 和 b 通过网络相连接 这时如果 b 想访问外网,就可以通过 a 来正向代理访问外网 正向代理就是在内网中模拟目标服务器,把内网中其它机器的请求 转发给外网中的真正的目标服
主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过