标签: reverse-proxy

docker反向代理中的nginx+vault

我需要将 nginx 配置为 docker 中运行的某些应用程序的反向代理。Portainer 运行良好,但 HashiCorp Vault 仍然存在问题。进一步的步骤将使用 nginx 为所有正在运行的应用程序进行 SSL 连接。所有应用程序都是最简单的设置,我可以在没有任何特殊功能的情况下使用。

环境

  • 森托斯7
  • rpm 1.16.1-1 的 nginx(对于调试选项,在进一步使用时它也应该在容器中)
  • 肖像画家
  • 避难所 1.2.4
/etc/nginx/nginx.conf
        用户 nginx;
    工作进程 1;

    error_log /var/log/nginx/error.log 调试;
    pid /var/run/nginx.pid;


    事件{
      工人连接1024;
    }


    http{
      包括/etc/nginx/mime.types;
      default_type 应用程序/八位字节流;

      log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent“$http_referer”'
                        '“$http_user_agent”“$http_x_forwarded_for”';

      access_log /var/log/nginx/access.log main;

      发送文件;
      #tcp_nopush 上;

      keepalive_timeout 65;

      #gzip 开启;

      服务器 {
        听80;
        服务器名称 1.2.3.4;

        位置/porttainer/ {
          proxy_pass http://1.2.3.4:9000/;
          重写 ^/portainer(/.*) $1 中断;
          proxy_redirect 关闭;
          proxy_set_header 主机 $host;
          proxy_set_header X-真实IP …

reverse-proxy nginx docker hashicorp-vault

5
推荐指数
1
解决办法
3023
查看次数

Spring Cloud Gateway 和 NGINX

我是否仍然需要 NGINX 来提供 JS 等静态内容以及向后端反向代理请求,或者仅使用 Spring Cloud Gateway 即可完成?Spring 文档有以下图像:

我在那里没有找到有关如何将静态内容返回给客户端的描述,这是否意味着它被认为是不好的做法,并且我需要反向代理的额外步骤来增加其延迟?如果没有,我在哪里可以找到有关如何使用 Spring Cloud Gateway 执行此操作的更多信息,特别是如果我要使用 Spring Gateway 进行 oauth2 授权代码流身份验证?

reverse-proxy oauth nginx spring-cloud-gateway

5
推荐指数
1
解决办法
2115
查看次数

使用 Traefik 对具有 Swagger UI 和 MinIO 的多个 docker 容器进行反向代理会抛出未找到错误

我正在尝试使用 traefik 运行一些示例,该示例将建立一个具有 swagger ui 和 MinIO docker 容器的反向代理。localhost:70/swagger我希望可以在和上访问这两项服务localhost:70/minio

这是我的docker-compose.yml文件:

version: '3'

services:
  reverse-proxy:
    image: traefik:v2.2
    container_name: traefik-reverse-proxy
    command: --providers.docker --api.insecure=true --entrypoints.web.address=:80 --log.level=DEBUG
    ports:
      - "70:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  swagger:
    image: swaggerapi/swagger-ui:v3.23.0
    container_name: swagger
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.swagger.rule=Host(`localhost`) && Path(`/swagger`)"
      - "traefik.http.routers.swagger.entrypoints=web"
      - "traefik.http.routers.swagger.service=swagger"
      - "traefik.http.services.swagger.loadbalancer.server.port=8080"
  minio:
    image: minio/minio:RELEASE.2019-12-24T23-04-45Z
    container_name: minio
    command: "server /data"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.minio.rule=Host(`localhost`) && Path(`/minio`)"
      - "traefik.http.routers.minio.entrypoints=web"
      - "traefik.http.routers.minio.service=minio"
      - "traefik.http.services.minio.loadbalancer.server.port=9000"
  whoami:
    image: "containous/whoami"
    container_name: …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy swagger docker docker-compose traefik

5
推荐指数
0
解决办法
1316
查看次数

如何用另一个值替换 NGINX 响应标头中*每个*出现的字符串?

我有一个 Nginx 设置,正在使用proxy_pass它与内部服务器通信并返回响应。我想要做什么 - 我可以用另一个单词替换特定标头中特定字符串的每个实例吗?

指向proxy_pass内部服务器,并在响应中发送以下标头:

WWW-Authenticate: Bearer realm="https://someinternal.domain/v2/token",service="https://someinternal.domain/v2/token"
Run Code Online (Sandbox Code Playgroud)

我希望覆盖它,将“someinternal”字符串替换为“mypublic”

WWW-Authenticate: Bearer realm="https://mypublic.domain/v2/token",service="https://mypublic.domain/v2/token"
Run Code Online (Sandbox Code Playgroud)

我知道 nginx 的sub_filter,但这似乎只适用于响应正文,而不适用于标头。
我知道proxy_redirect,但这仅适用于 Location 标头。
所以这个问题归结为 - 如何在自定义标头中执行这些 URL 替换?


我确实有一些工作,但感觉不优雅;如果我可以在不知道标头结构的情况下替换所有出现的情况,那就太好了。

map $upstream_http_www_authenticate $newvalue {
  ~(.*)(someinternal)(.*)(someinternal)(.*)  $1mypublic$3mypublic$5;
  default "";
}

server {
    listen 80;

    location / {
      proxy_pass https://someinternal.domain/;
      proxy_hide_header 'WWW-Authenticate';
      add_header WWW-Authenticate $newvalue always;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用 Nginxmap和正则表达式来查找“someinternal”,然后在正则表达式匹配之间使用“mypublic”重建标头。然后我用来proxy_hide_header隐藏内部标头,并添加其替换项。

reverse-proxy nginx http-headers

5
推荐指数
0
解决办法
1803
查看次数

为什么 wiki.js 安装时需要公共 URL?

配置数据库并使用 nodejs 运行 Wiki.js 实例后,系统提示我在localhost:3000. 但是,有一个输入栏要求输入公共 URL wiki.example.com具有公共 URL 输入的 Wiki.js 安装页面 我正在自己的计算机上尝试 wiki.js,这与公共 URL 无关。将来,我计划使用nginx反向代理接收到服务器上两个不同端口的请求,这也不需要向服务公开公共 URL(已代理nginx)。

因此我很好奇:为什么 wiki.js 在安装时需要公共 URL?在我的计算机上测试 Wiki.js 时需要配置什么?我需要在nginx反向代理中配置什么以及在公共URL输入栏中填写什么?

url reverse-proxy nginx server wiki.js

5
推荐指数
1
解决办法
5527
查看次数

在 digitalocean Droplet axios 请求上反应应用程序在其他机器上不起作用

大家好,我在桌面上打开我的网站时遇到问题。在我创建应用程序并执行所有代码的笔记本电脑上,我的 React 应用程序工作正常并更新,但是在其他计算机上,只有我的组件/元素加载,而我的 axios 请求正在返回(404 连接拒绝错误)。有什么提示或修复吗?PS 这是我第一次尝试将应用程序构建部署到网络服务器(digitalocean/NGINX)。

NGINX 配置文件

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        root /var/www/epenn92reactapp.space/html/among-us-reactapp3/client/buil>
        index index.html index.htm index.nginx-debian.html;

        server_name epenn92reactapp.space www.epenn92reactapp.space;

        error_page 405 =200 $uri;
        error_page 404 /index.html;

        location ^~ /assets/ {
                gzip_static on;
                expires 12h;
                add_header Cache-Control public;
  }

        location /v1/api {
                proxy_http_version 1.1;
                proxy_cache_bypass $http_upgrade;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                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;
                proxy_pass http://64.227.5.159:8080;
                try_files $uri /index.html;
}

    listen [::]:443 ssl ipv6only=on; …
Run Code Online (Sandbox Code Playgroud)

webserver reverse-proxy nginx http-status-code-404 reactjs

5
推荐指数
0
解决办法
327
查看次数

如何使用 caddy 作为带有 h​​ttps 的本地域的反向代理

是否可以使用 caddy 进行本地开发,其中您有https://mysite.loc并使用 Caddyfile 作为本地主机上运行的服务的反向代理?

我的主机文件,所以我有本地 mysite.loc 域

127.0.0.1   mysite.loc
Run Code Online (Sandbox Code Playgroud)
mysite.loc {
  reverse_proxy /api localhost:5000
  reverse_proxy /admin localhost:6000
  reverse_proxy /graphql localhost:7000
  reverse_proxy localhost:4000

  tls ???
}

Run Code Online (Sandbox Code Playgroud)

这就是我已经走了多远。我认为我需要以某种方式将 mysite.loc 指向正在运行的 caddy 守护进程,以便它可以拦截提供生成的证书的请求,然后我将在本地信任该证书,并充当重定向到本地运行的服务的代理。我还认为我不需要自己生成任何证书球童应该这样做吗?我还想避免使用 mysite.loc 的任何端口,例如https://mysite.loc:4000只是https://mysite.loc,然后让 Caddy 处理其余的事情。我也想避免使用 docker。

reverse-proxy caddy caddyfile

5
推荐指数
1
解决办法
5746
查看次数

MinIO 签名不匹配

我已在 EKS 中的反向代理后面设置了 MinIO。在 MinIO 更新到RELEASE.2021-11-03T03-36-36Z. mc现在,当我尝试使用命令行实用程序访问我的 MinIO 存储桶时,出现以下错误:mc: <ERROR> Unable to list folder. The request signature we calculated does not match the signature you provided. Check your key and signing method.

mc版本是RELEASE.2021-11-16T20-37-36Z. 当我将 MinIO 容器端口转发到本地主机并在浏览器中访问它时,http://localhost:9001我可以访问它,但我无法再登录。我收到错误:

无效登录,403 禁止`。这可以在我的 MinIO 容器中看到

它还记录以下内容:

API: SYSTEM()
Time: 03:19:57 UTC 11/23/2021
DeploymentID: 60a8ed7a-7448-4a3d-9220-ff823facd54e
Error: The request signature we calculated does not match the signature you provided. Check your key and signing method. (*errors.errorString)
       requestHeaders={"method":"POST","reqURI":"/minio/admin/v3/update?updateURL=","header":{"Authorization":["AWS4-HMAC-SHA256 Credential=<credential-scrubbed>/20211123//s3/aws4_request, …
Run Code Online (Sandbox Code Playgroud)

reverse-proxy minio amazon-eks

5
推荐指数
0
解决办法
1753
查看次数

当连接到启用了 SSL 的 NGINX 后面的服务器时,Nest.js GRPC 客户端获取 RST_STREAM,代码为 2

我们有 2 个微服务需要通过 GRPC 进行通信,它们都是用 Nestjs 编写的。这两种服务可以通过 IP 和端口轻松通信。

现在,当 GRPC 服务器位于启用了 SSL 的 Nginx 代理后面时(没有 SSL 的 Nginx 工作正常),就会出现问题。我尝试测试它grpcurl,请求到达 GRPC 服务器,但是当启用 SSL 时,用 Nestjs 编写的 GRPC 客户端无法通信,并出现以下错误:

code: 13,
details: 'Received RST_STREAM with code 2 triggered by internal client error: Protocol error'
Run Code Online (Sandbox Code Playgroud)

值得注意的是,这两个微服务不与内部 SSL 通信,Nginx 向 GRPC 服务器发送未加密的流量。

这是 Nginx 配置:

server {
    server_name grpc.example.com;
    error_log /var/log/nginx/grpc.log info;


    location / {
        grpc_pass grpc://127.0.0.1:5001;
    }

    listen 443 ssl http2;

    ssl_certificate /path/to/cert
    ssl_certificate_key /path/to/cert/key
}
Run Code Online (Sandbox Code Playgroud)

GRPC 客户端微服务使用此文档并获取如下 …

ssl reverse-proxy nginx grpc nestjs

5
推荐指数
1
解决办法
2813
查看次数

Apache 代理背后的 Gitlab

经过几个小时的搜索,找到了在 Apache 反向代理后面运行的 Gitlab 的解决方案。需要明确的是,我可以连接到 Gitlab 实例,并且还可以执行每个基本功能,例如推送、克隆代码等。

我的问题是,我在问题中发布的每张图片始终以http://127.0.0.1:8090/.../作为 URL。我尝试更改 external_url,这总是导致 Gitlab 响应 502。我更改和尝试的任何其他设置要么没有效果,要么导致 500 或 503。我决定向你们中的任何一个人寻求提示。

我当前的配置是:/etc/gitlab/gitlab.rb

 external_url 'http://127.0.0.1:8090'
 gitlab_rails['time_zone'] = 'Europe/Berlin'

 gitlab_rails['smtp_enable'] = true
 gitlab_rails['smtp_address'] = "mail.server.de"
 gitlab_rails['smtp_port'] = 465
 gitlab_rails['smtp_user_name'] = "noreply@server.de"
 gitlab_rails['smtp_password'] = "password"
 gitlab_rails['smtp_domain'] = "mail.server.de"
 gitlab_rails['smtp_authentication'] = "login"
 gitlab_rails['smtp_enable_starttls_auto'] = false
 gitlab_rails['smtp_tls'] = true
 gitlab_rails['smtp_pool'] = false

 gitlab_rails['smtp_openssl_verify_mode'] = 'none'

 gitlab_rails['gitlab_email_enabled'] = true

 gitlab_rails['gitlab_email_from'] = 'noreply@server.de'
 gitlab_rails['gitlab_email_display_name'] = 'NoReply Server'
 gitlab_rails['gitlab_email_reply_to'] = 'kontakt@server.de'

 gitlab_rails['gitlab_default_theme'] = 2

 letsencrypt['enable'] = false
Run Code Online (Sandbox Code Playgroud)

/etc/apache2/sites-available/gitlab.conf

<VirtualHost *:443>
    ServerName …
Run Code Online (Sandbox Code Playgroud)

apache reverse-proxy gitlab

5
推荐指数
1
解决办法
3869
查看次数