Tag: 反向代理

Docker与nginx反向代理到golang服务器的问题

我有nginx反向代理到一个golang服务器,每个在它自己的docker集装箱,并正常运行。 当我尝试连接到Go容器时,在我的本地Mac机器上和生产服务器Linux Debian上,我都不断收到nginx的这个错误。 一周前它在我的本地Mac机器上工作,突然之间,它就不复存在了 nginx_1 | 2017/09/28 01:29:54 [error] 5#5: *12 upstream timed out (110: Connection timed out) while connecting to upstream, client: 172.23.0.1, server: , request: "GET /api/about HTTP/1.1", upstream: "http://67.199.248.12:8080/api/about", host: "localhost" 有人可以解释这里发生了什么? 什么是67.199.248.12,为什么Nginx不能ping /连接到Go容器? Go容器中的/ etc / hosts里面有什么 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters […]

Nginx的docker容器将不会代理Web应用程序容器

我有一个Docker容器,运行一个Web应用程序和一个运行Nginx的docker容器:ubuntu。 Web应用程序容器运行在端口:3000上,暴露于外部(浏览器连接到主机的端口:3000端口访问应用程序) Nginx容器运行在80端口,可以通过浏览器连接到主机的ip访问 Nginx容器和Web应用都连接到相同的Docker网桥。 我可以在它的内部IP(172.21.0.2)上docker exec -it(nginx)bash和ping(web-app),反之亦然。 我也可以从两个容器外使用nmap,看到(nginx)的内部IP为80开放端口,应用程序的开放端口为3000。 什么不坏: Nginx安装正确,但可能configuration不正确。 networking应用程序很实用,不幸的是无法重新configuration以适应Nginx。 我曾经尝试过: 通过docker-compose.yml,dockerfile,一个空容器> bash和手动apt-get安装nginx来安装nginx。 由于应用程序图像的细节(图像实际上是一个node.js容器并具有应用程序的子服务),因此我不能在一个docker-compose文件中包含Web应用程序和nginx(并修复networking问题)试图在一个docker-compose.yml中包含这两个服务只是导致撰写创buildnginx和一个无应用程序的node.js容器。 我想做什么: 仅通过dockerfile和docker run命令创build一个nginx容器(以支持可伸缩性),通过它们都连接的dockernetworking来代理已经运行的应用容器。 我希望nginx能够在80端口上收听,并把它发送到3000端口的容器。我感到困惑的是: 在nginx.conf文件中,是否将其路由到容器的内部IP为172.21.0.2:3000,(hostIP):3000,Localhost:3000或0.0.0.0:3000? 我的文件如下: Dockerfile: FROM xqdocker/ubuntu-nginx COPY nginx.conf /etc/nginx/nginx.conf ##.confd IS LOCAL TO DOCKERFILE nginx.conf: worker_processes 1; events { worker_connections 1024; } http { sendfile on; upstream docker-nginx { server 172.21.0.2:3000; #WHAT DO I PUT HERE?? } […]

Nginx代理服务器返回错误的IP地址

我有一个运行这个configuration的Nginx代理: server { listen 443 ssl; server_name jackett.example.com jackett.example.com; # SSL include /etc/nginx/confs/nginx-ssl.conf; # Authentication location /auth-admin { internal; proxy_pass https://www.example.com/auth.php?admin&whitelist=82.18.122.90; proxy_pass_request_body off; proxy_set_header Content-Length ""; proxy_set_header X-Original-URI $request_uri; } # Root block location / { auth_request /auth-admin; proxy_pass http://jackett:9117/; proxy_set_header Host $http_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 1.1 […]

反向代理+ IIS + Docker

我有两个服务在群中运行(我将称它们为A和B),副本为1,这意味着每个服务的一个容器。 服务A具有调用服务B中的另一个web应用程序(api)的web应用程序(UI)。 服务A在8082上暴露,服务B在8081上暴露。 但是,由于端口的差异,CORS将不允许A调用B(即使它们在群集中的相同url上可用),但是我将不得不实现某种反向代理来实现此function。 我的想法是与A现有的UI应用程序中有一个虚拟Web API,并将urlReWrite规则添加到虚拟API,以便从UI应用程序到服务A中的虚拟Web应用程序的请求将被redirect到服务B中的实际一个。 无论什么原因,这是行不通的。 我只是得到404错误。 有人可以帮我弄这个吗? 我也发布了下面的docker文件的内容服务A有urlRewrite写入它。 # escape=` FROM microsoft/aspnet SHELL ["powershell", "-command"] # Install urlRewrite RUN Invoke-WebRequest http://download.microsoft.com/download/E/9/8/E9849D6A-020E-47E4-9FD0-A023E99B54EB/requestRouter_amd64.msi -UseBasicParsing -OutFile C:/requestrouter.msi; ` Start-Process msiexec -ArgumentList '/i C:\requestrouter.msi /qn' -Wait; rm C:\requestrouter.msi # Install ARR RUN Invoke-WebRequest http://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi -UseBasicParsing -OutFile C:/rewrite.msi; ` Start-Process msiexec -ArgumentList '/i C:\rewrite.msi /qn' -Wait; rm C:\rewrite.msi […]

为什么Traefik提供的内容会被截断?

我在我的开发环境中的几个docker容器前面有一个Traefik反向代理。 我最近注意到,通过端口80(Traefik)服务时,大文件正在被切断。 但是,如果我使用Docker容器上的本地HTTP端口下载文件,则文件没问题。 这似乎只影响超过一定大小的文件。 我在我的一个Docker容器上生成了一个大文件。 for ((i=1;i<=200000;i++)); do echo "$i some new line that has a reasonably long length and content" >> public/large-file.txt; done 如果我curl文件并绕过Traefik(此容器上的端口4200),该文件是完整的,每次相同的确切大小。 如果我通过Traefik通过端口80 curl文件,该文件在一个看似随机的地方被切断。 $ curl -O http://localhost/large-file.txt; cat large-file.txt … 114633 some new line that has a reasonably long length and content 114634 some new line that has a reasonably long […]

我想通过IP_OF_SYNOLOGY:PORT从局域网访问Jira(Synology DS716 + II上的Docker),但是例如jira.synology.local

我正在使用一台Synology NAStypesaDS716 + II,DSM 6.1.4-15217 Update 2来运行带有Jira容器的Docker。 所以现在我想做的事情我被分配到工作是访问Jira的jira.synology.local界面让我们说,与jira.synology.local是服务器名称的jira.synology.local 。 我读了很多关于nginx ,以及自DSM 6.X以来它是如何构build的,但是我似乎没有把它正确地工作。 我可以通过IP_OF_SYNOLGY:PORT从局域网内的另一台机器访问Jira的IP_OF_SYNOLGY:PORT界面,所以当在服务器上设置一个反向代理时,它应该指向LOCALHOST:PORT对吗? 我也尝试使用实际的IP而不是LOCALHOST但没有成功。 我可以通过IP_OF_SYNOLGY:PORT访问Synology本身的界面,如果我设置了域名,也可以通过DOMAINNAME.LOCAL 。 我真的不知道我错过了什么,我试过了我能想到的一切。 有人有这方面的经验吗? 如果缺less一些信息,我会很乐意提供。 我不得不承认,我对synology很陌生。 提前致谢!

Docker nginx dev反向代理定期死亡

我使用标准的nginx config docker容器作为应用程序开发容器的入口反向代理。 额外的代理configuration如下所示: server { listen 80; server_name app-name.*; location / { set $upstream client-wds; resolver 127.0.0.11 valid=30s; proxy_pass http://$upstream; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; } location /api { set $upstream server-api; resolver 127.0.0.11 valid=30s; proxy_pass http://$upstream; } } 并定期容器停止,并在原木只有Killed线: 大GET请求后,我似乎发生。 我不知道是什么原因,有什么build议如何解决?

docker中的apache反向代理

我目前正试图学习使用docker,我遇到了反向代理和Apache的一个小问题。 所以我有一个运行jenkins / jenkins的容器:最新的端口8080,我想用apache将它映射到端口80上的/ jenkins。 这是我目前的代理configuration: ProxyPass /jenkins http://jenkins:8080/jenkins nocanon ProxyPassReverse /jenkins http://jenkins:8080/jenkins ProxyRequests Off AllowEncodedSlashes NoDecode 和这个它redirect到jenkins容器的第一个请求,但jenkinsredirect到/login导致404。我明白为什么会发生这种情况,但有没有解决这个问题,而不修改jenkins形象通过设置一个前缀? 为什么我不想添加前缀的主要原因是因为它看起来像很多工作,特别是如果我需要这样做的所有服务,我想运行在docker……这似乎是非常不切实际的。

使用docker容器作为代理

一般来说,我正在尝试使用泊坞窗容器作为同一networking覆盖内的其他docker容器的HTTP代理。 让我们调用这个代理容器网关。 假设网关configuration了所有必需的CA证书,此网关假设将接收到的HTTP请求更改为HTTPS请求,并将其转发给外部世界。 现在让我们来具体说明一下,我使用的是docker swarm和services + replicas,网关在端口80上提供了一些API,而容器使用网关的服务名+端口80来请求这个API(这与代理I需要),例如: HTTP://网关:80 / API /注销 我也想用这个端口代理,这意味着其他容器可以发送HTTP请求到端口80上的某个IP(而不是DNS),这个请求将通过网关,而网关将查看http请求看到这个消息不是“他”,它会执行http S (端口443)请求到实际的外部服务器。 我不能在下面的链接中使用Docker代理的解决scheme: https://docs.docker.com/engine/admin/systemd/#httphttps-proxy 因为这个HTTP代理解决scheme只适用于已经运行的代理,而不是一个dockerized。 (如果我使用它,docker将无法从repo获取图像,因为它将查找不存在的代理,因为docker本身没有启动Gateway容器)。 所以,这使我面对这个问题。 我将如何将内部容器请求转发到网关,而不使用网关服务名称。 我认为iptables是唯一的select,但如何? 我不能使用网关IP,因为网关是3个虚拟机上的副本,并且IP发生了变化,无论如何,任何发送http:// some_external_server_ip:80 / some_api的容器都需要以某种方式通过网关。 TLDR 我可以在iptables中执行一些操作(使用docker链和PREROUTING链),将端口80上的所有数据包(通过覆盖networking中的容器发送)转发到名为Gateway的服务容器中,而忽略目标ip? (只能由端口识别数据包并将其转发给特定的合作者) 希望这是明确的… =)

为什么这个nginx反向代理configuration为gitlab不起作用

我在Docker上运行Gitlab。 当我试图把Gitlab放在一个Nginx反向代理的后面时,我总是得到404错误,因为在redirect期间URL变得不正确。 当我尝试访问http:// localhost / gitlab时 ,它redirect到http:// localhost / users / sign_in而不是http:// localhost / gitlab / users / sign_in ,最终导致404。 这是我的configuration: proxy.conf server { listen 0.0.0.0:80; access_log /var/log/nginx/gitlab_access.log; error_log /var/log/nginx/gitlab_error.log; location /gitlab/ { proxy_pass http://gitlab-ce/; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Frame-Options […]