我需要将 nginx 配置为 docker 中运行的某些应用程序的反向代理。Portainer 运行良好,但 HashiCorp Vault 仍然存在问题。进一步的步骤将使用 nginx 为所有正在运行的应用程序进行 SSL 连接。所有应用程序都是最简单的设置,我可以在没有任何特殊功能的情况下使用。
用户 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 … 我是否仍然需要 NGINX 来提供 JS 等静态内容以及向后端反向代理请求,或者仅使用 Spring Cloud Gateway 即可完成?Spring 文档有以下图像:
我在那里没有找到有关如何将静态内容返回给客户端的描述,这是否意味着它被认为是不好的做法,并且我需要反向代理的额外步骤来增加其延迟?如果没有,我在哪里可以找到有关如何使用 Spring Cloud Gateway 执行此操作的更多信息,特别是如果我要使用 Spring Gateway 进行 oauth2 授权代码流身份验证?
我正在尝试使用 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) 我有一个 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隐藏内部标头,并添加其替换项。
大家好,我在桌面上打开我的网站时遇到问题。在我创建应用程序并执行所有代码的笔记本电脑上,我的 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) 是否可以使用 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。
我已在 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) 我们有 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 客户端微服务使用此文档并获取如下 …
经过几个小时的搜索,找到了在 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)