标签: reverse-proxy

如果我在 Docker 容器中运行 Node.js,是否需要反向代理?

我读过一些建议nginx在 Node.js 应用程序之前使用反向代理的文章(例如 )(例如:Advantages of a reverse proxy in front of Node.JS)。这比运行 Node.js 本身并公开它更好(至少在安全性方面)。

但是,在 Docker 容器内运行 Node.JS 应用程序应该可以防止安全问题(因为应用程序在容器内运行并且与主机系统隔离)。

所以,我的问题是:在 Docker 容器中运行 Node.js 应用程序时使用反向代理有好处吗?如果是这样,它如何改进我的申请?

security reverse-proxy nginx node.js docker

2
推荐指数
1
解决办法
302
查看次数

如何在 docker swarm 中禁用对覆盖网络的外部访问

我正在尝试建立一个具有以下服务的群:

  • nginx 作为反向代理(主要用于处理虚拟主机和 SSL,尽管这不在 nginx.conf 中)。
  • 一个 golang 网络应用程序。
  • redis用于缓存。
  • postgresql用于存储。

这会生成类似于以下内容的 docker-compose 文件:

version: '3'
services:
  proxy:
    image: nginx:1.13.5-alpine
    ports:
      - "80:80"
    deploy:
      placement:
        constraints: [node.role == manager]
    depends_on:
      - api
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - webnet

  api:
    image: user/webapp:latest
    deploy:
      replicas: 4
    ports:
      - "8000:8000"
    depends_on:
      - postgres
      - redis
    networks:
      - webnet

  postgres:
    image: postgres:9.6.5-alpine
    ports:
      - "5432:5432"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet

  redis:
    image: redis:4.0.2-alpine
    ports:
      - "6379:6379"
    deploy:
      placement:
        constraints: [node.role …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx docker docker-compose

2
推荐指数
1
解决办法
1602
查看次数

NGINX 仅对成功请求启用速率限制

有没有办法只对成功的请求(即 HTTP 状态代码 200)启用速率限制?

例如,在我的配置的以下片段中......

http {
    limit_req_zone $binary_remote_addr zone=test:10m rate=2r/m;

    server {
        location / {
             limit_req zone=test;
             proxy_pass http://localhost:3000/;
             ...
        }

        ...
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

...请求成功速率受到限制(每分钟最多两个请求)。

但是,由于这是用于向我发送电子邮件的联系表单,因此如果返回错误,我不关心速率限制,http://localhost:3000/因为不会发送任何电子邮件。

reverse-proxy nginx rate-limiting

2
推荐指数
1
解决办法
1767
查看次数

Docker nginx proxy_pass - 上游连接被拒绝

我已经使用 Nginx 启动了一个简单的 Docker 容器,我想使用这个 Docker Nginx 作为我的主机上的应用程序(HTTP Tomcat)的反向代理。但我的proxy_pass仅适用于意外的 IP 值。

预期行为:当我docker inspect在容器上使用时,我的网关172.29.0.1,我的proxy_pass应该使用172.29.0.1

当前:我必须使用172.18.0.1myproxy_pass才能使其工作,并且我不明白为什么这个随机值有效。如果我不使用172.18.0.1,则会出现 502 HTTP 错误,并且我的 docker 日志显示“上游连接被拒绝”。

我的Dockerfile(仅包含 1 行):

FROM nginx

我的docker-compose(我使用它docker-compse up --build来启动我的容器):

version: '3'
services:
  nginx-web:
    image: nginx-web
    container_name: nginx-web-container
    build: .
    ports:
     - "80:80"
    volumes:
     - ./volume-sources/nginx-conf-files:/etc/nginx/conf.d/
Run Code Online (Sandbox Code Playgroud)

我的nginx 文件(我的nginx-web值是网关 …

reverse-proxy nginx docker docker-compose nginx-reverse-proxy

2
推荐指数
1
解决办法
5942
查看次数

Traefik - 使用路径代理到后端

我需要代理http://www.example.com/foohttp://<backend>/bar,使用 nginx 我有这样的配置:

server {
    listen       80;
    client_max_body_size 2048M;
    server_name www.example.com;
    location /foo {
        proxy_pass      http://container_name/bar/;
        proxy_set_header Host            $host;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}
Run Code Online (Sandbox Code Playgroud)

我会将其转换为 traefik。这是我的撰写文件:

version: '3'
services:
 traefik:
   image: traefik:1.7.3-alpine
   command: --api --docker
   ports:
    - "80:80"
    - "8080:8080"
   volumes:
    - /var/run/docker.sock:/var/run/docker.sock
   labels:
    - traefik.enable=false

 webapp:
   ...
   ...
   labels:
    - traefik.backend=bar
    - traefik.frontend.rule=Host:www.example.com;Path:/foo/
    - traefik.port=80
Run Code Online (Sandbox Code Playgroud)

有办法解决吗?

谢谢

reverse-proxy traefik

2
推荐指数
1
解决办法
3794
查看次数

无法在 Docker 上访问 NginX 反向代理后面的 Kibana

我有一个包含 NginX、ElasticSearch 和 Kibana 的 Docker Compose 设置,如下所示:

web:
    build:
      context: .
      dockerfile: ./system/docker/development/web.Dockerfile
    depends_on:
      - app
    volumes:
      - './system/ssl:/etc/ssl/certs'
    networks:
      - mynet
    ports:
      - 80:80
      - 443:443

  elasticsearch_1:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    container_name: "${COMPOSE_PROJECT_NAME:-service}_elasticsearch_1"
    environment:
      - node.name=elasticsearch_1
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=elasticsearch_2,elasticsearch_3
      - cluster.initial_master_nodes=elasticsearch_1,elasticsearch_2,elasticsearch_3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es_volume_1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - mynet

  elasticsearch_2:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    container_name: "${COMPOSE_PROJECT_NAME:-service}_elasticsearch_2"
    environment:
      - node.name=elasticsearch_2
      - cluster.name=es-docker-cluster
      - discovery.seed_hosts=elasticsearch_1,elasticsearch_3
      - cluster.initial_master_nodes=elasticsearch_1,elasticsearch_2,elasticsearch_3
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx docker kibana kibana-7

2
推荐指数
1
解决办法
4965
查看次数

如何使用.NET core 3.1为任何请求的HTTP客户端设置默认代理?

我正在使用 interfax.api dll 向用户发送传真。如何添加代理服务器配置以将传真发送给用户。实际上我想在.net core 中启用代理服务器设置。最好的方法是什么?

proxy reverse-proxy asp.net-core interfax

2
推荐指数
1
解决办法
5682
查看次数

如何修复 nginx 错误“参数数量无效”?

我尝试重定向到代理服务器 nginx。

        location /phpmyadmin {
        proxy_http_version 1.1;
        proxy_pass https://${PMA}:5000/;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

nginx: [emerg] invalid number of arguments in "proxy_set_header" directive in /etc/nginx/nginx.conf:26
Run Code Online (Sandbox Code Playgroud)

此清单中检查错误的完整代码,因为我真的找不到某些错误(${env} = 脚本中的正确更改

user root;
worker_processes auto;
pcre_jit on;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    keepalive_timeout 3000;
    sendfile on;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        ssl_certificate /etc/ssl/nginx.crt;
        ssl_certificate_key /etc/ssl/nginx.key;
        root /home;
        index default.html /default.html;
        location /phpmyadmin {
            proxy_http_version 1.1;
            proxy_pass https://${PMA}:5000/; …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx docker docker-compose nginx-reverse-proxy

2
推荐指数
1
解决办法
5598
查看次数

Docker-compose,Swag 错误:“您的 DockerHost 很可能运行过时版本的 libseccomp”

我不确定出了什么问题。我刚刚开始学习docker,我正在尝试使用反向代理做一个项目。我在家里的 RPI 4 上运行 docker 和 docker-compose。但是,在使用以下信息创建并运行 docker-compose.yml 后,我遇到了问题:

version: '2.1'
services:
  duckdns:
    image: linuxserver/duckdns
    container_name: duckdns
    environment:
      - PUID=1000 #optional
      - PGID=1000 #optional
      - TZ=America/New_York
      - SUBDOMAINS=My_SubDomain,
      - TOKEN=myToken
      - LOG_FILE=false #optional
    volumes:
      - /home/pi/compose/data/duckdns/config:/config #optional
    restart: unless-stopped

  swag:
    image: linuxserver/swag
    container_name: swag
    cap_add:
      - NET_ADMIN
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - URL=My_SUBDOMAIN.duckdns.org
      - SUBDOMAINS=www,
      - VALIDATION=duckdns
      - DNSPLUGIN=cloudflare #optional
      - PROPAGATION= #optional
      - DUCKDNSTOKEN=MY_TOKEN
      - EMAIL= #optional
      - ONLY_SUBDOMAINS=false #optional
      - EXTRA_DOMAINS= #optional
      - STAGING=false #optional …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy raspberry-pi docker docker-compose

2
推荐指数
1
解决办法
3842
查看次数

Docker 守护进程似乎正在运行,但 docker.sock 已经消失。我缺少什么?

背景:
\n几个月前我拿起一台旧服务器并启动了一个 Linux 项目。我学到了很多东西并且获得了很多乐趣。我正在使用服务器托管多个网站(这些网站仍在开发中,因为我也在学习网站开发)。在网上搜索了解了SSL/TLS证书、nginx、docker等。

\n

根据我所学到的知识,我设置了 SWAG来使用 docker-compose 处理证书和反向代理。我将其他站点添加到同一个 docker-compose.yaml 文件中。经过一番努力,我终于能够让一切按照我想要的方式进行。我的每个站点都有 docker 容器,并且每个站点都有存根站点。我可以从任何浏览器访问它们。

\n

我第一次停电并且服务器恢复时,docker 容器并未全部正确启动。我在 SWAG 容器上收到“地址已在使用中”错误。我用谷歌搜索解决方案并找到了这个答案建议找到并终止绑定到相关端口(对我来说是 80 和 443)的现有进程,以便 docker 容器(在我的例子中是 SWAG 容器)可以绑定到它们。我发现使用端口 80 和 443 的进程都是“docker-pr”。我杀死了它们,并且能够成功地重新启动 SWAG docker 容器,没有任何错误。但是,每次重新启动或重新引导服务器时,我都必须执行相同的步骤。

\n

最近(过去几周)我还看到了另一个问题。我按照上述步骤操作,一切都按预期进行。然后,在 1-2 小时或 1-2 天后,我检查 docker 容器的状态,结果显示:

\n
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?\n
Run Code Online (Sandbox Code Playgroud)\n

我查了一下,没有/var/run/docker.sock文件。我使用命令检查了 docker 守护进程的状态sudo service docker status,结果显示:

\n
\xe2\x97\x8f docker.service - Docker Application Container Engine\n     Loaded: loaded (/lib/systemd/system/docker.service; …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx docker docker-compose ubuntu-20.04

2
推荐指数
1
解决办法
2030
查看次数