Articles of 反向代理

如何在nginx的proxy_pass位置设置资产caching

我有一个片段,我使用的是我的所有网站,在静态网站上运行良好,但是在proxy_pass网站上没有那么多。 我不知道我做错了什么,我怎样才能安全地包含我的代码段而不使资产404? 这是我的服务器块 server { server_name jenkins.fabrikam.com; include /etc/nginx/location.conf; # All assets are 404 with this location / { proxy_pass http://localhost:8080; include /etc/nginx/proxy_params; } } 这里是location.conf # cache.appcache, your document html and data location ~* \.(?:manifest|appcache|html?|xml|json)$ { expires -1; } # Feed location ~* \.(?:rss|atom)$ { expires 1h; add_header Cache-Control "public"; } # Media: images, […]

在Nginx中logging自定义的proxy_set_header

我有一个问题在我的nginx上logging一个自定义的proxy_set_header。 我有nginx作为反向代理位于同一个服务器(用于testing)的apache服务器。 这个名为“xreqid”的头文件充当每个事务的唯一ID,并设置为各种variables,如$ pid $ msec。 这个头文件是使用proxy_set_header创build的,以便在后端服务器上传递。 而且,标题的内容首先被“设置”为随后用于标题“xreqid”的variables名“reqid” nginx的前端configuration很简单: server { listen 80 default_server; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name _; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; set $reqid $pid-$msec-$remote_addr-$request_length; proxy_set_header xreqid $reqid; location / { proxy_pass http://localhost:8080/; try_files $uri $uri/ =404; } # Log formating access_log /var/log/nginx/unified.access.log my_log_format; 和日志格式: log_format my_log_format '$hostname "$http_user_agent" […]

nginx反向代理与NodeJS应用程序和redirect

我一直在研究这个问题太久,所以我需要来请求专家的帮助! 我的查询是非常类似于这里问: nginx代理传递redirect忽略端口,但我相信,我的节点应用程序的行为略有不同。 我正在运行Intel AMT NodeJS应用程序meshcommander( http://www.meshcommander.com/meshcommander ),它在端口3000上提供一个web应用程序。该应用程序在服务器192.168.0.27上运行。 我的nginx服务器在端口80上的同一台服务器上运行,这就是我在主服务器块下设置了反向代理的方式: location /intel { satisfy any; allow 192.168.0.0/24; deny all; auth_basic "Restricted Content"; auth_basic_user_file /etc/nginx/.htpasswd; rewrite /intel(/.*) /$1 break; proxy_pass http://192.168.0.27:3000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } 我遇到的第一个问题是,当你直接在端口3000上打开节点应用程序时,像这样: http://192.168.0.27:3000 它会redirect到另一个页面: http://192.168.0.27:3000/default.htm 不幸的是,当你转到:nginx反向代理不会自动发生这种情况: http://192.168.0.27/intel 但没有问题,这只是为了调用这个方法: htt://192.168.0.27/intel/default.htm 这很好,但是在使用web应用程序时,最终需要调用局域网上的另一台服务器,以及发生故障的地方。 我可以看到节点应用程序中的某些操作调用页面,如: http://192.168.0.27/intel/webrelay.ashx?p=1&host=10.7.7.6&port=16992&tls=0 它返回一个404,我可以看到这是它被发送的方式: Request URL:http://192.168.0.27/intel/webrelay.ashx?p=1&host=10.7.7.6&port=16992&tls=0 Request method:GET […]

用Postgres和SSLconfigurationHaproxy tcp

我试图configurationHaproxy来反向代理一个postgres服务器。 我必须和客户有沟通。 我无法在haproxy中configurationssl终止(正如我为其他http服务所做的那样),因为它不被支持,所以我在postgres上激活ssl并安装了让我们encryption证书。 在本地networking上,直接访问(没有Haproxy),这是工作正常,但与Haproxy不是。 Haproxy很好的接收连接,但不传递给postgres(使用tcpdump进行检查)。 我激活健康检查(请参阅configuration)来find问题,但现在我得到了健康检查的错误。 Server sql-backend/pg_experimental_server is DOWN, reason: Layer6 invalid response, info: "SSL handshake failure", check duration: 1ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue. 所以每当我尝试连接,我得到了(我没有检查相同): ROUTER_IP [05/Nov/2017:23:09:06.193] sql-01 sql-01/<NOSRV> -1/-1/0 0 SC 0/0/0/0/0 0/0 configuration: frontend sql-01 bind *:5432 mode tcp option […]

nginx:未知指令“<上游”

我将nginxconfiguration为反向代理。 我有我的nginx.conf中的以下内容: user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip off; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; } mail { server […]

当通过Heroku服务器访问Nginx反向代理超时请求,但从我的机器罚款

我有一个反向代理运行在EC2实例设置上,我打算使用它连接到客户端的临时环境,以便我们可以在应用程序与其网站上线之前检查它们之间的兼容性。 客户将我们的办公室和我们的Heroku盒子列入白名单。 如果我通过办公networking访问反向代理,那么Nginx的日志中就会显示请求,并且浏览器按照预期的方式通过反向代理加载该站点。 我也为我们的Heroku服务器设置了例外,但是请求每次都超时。 奇怪的是,在Nginx日志中没有任何东西出现 – 没有超时或其他失败的请求。 Heroku服务器具有以下静态IP:195.219.8.206,195.219.8.212 有人知道为什么会发生这种情况吗? 这是我的Nginxconfiguration: server { listen 80; server_name company-staging-proxy.redant.cloud; proxy_redirect http://www.uat2prd.company.com http://company-staging-proxy.redant.cloud; proxy_redirect https://www.uat2prd.company.com https://company-staging-proxy.redant.cloud; location / { add_header Set-Cookie Experiment=FH; resolver 127.0.0.1; proxy_pass http://www.uat2prd.company.com; proxy_set_header Accept-Encoding ""; # sub_filter_types *; sub_filter 'www.uat2prd.company.com' 'company-staging-proxy.redant.cloud'; sub_filter 'www.c1.uat2prd.company.com' 'company-c1-staging-proxy.redant.cloud'; sub_filter 'www.c2.uat2prd.company.com' 'company-c2-staging-proxy.redant.cloud'; sub_filter_once off; proxy_set_header Set-Cookie Experiment=FH; proxy_set_header X-Real-IP $remote_addr; […]

Apache反向代理自定义响应

我们正在运行一个用作反向代理的Apache 2.4.6服务器。 该服务器将请求平衡到两个tomcat后端服务器。 我们需要在后端服务器失败时configuration自定义响应,如下所示:HTTP状态码:200内容types:application / json响应正文:“门户处于维护模式” 而且,我们只需要将这个响应发送到移动应用程序,而不是web浏览器,检查一个自定义的http头。 有人能帮我find解决办法吗? 提前致谢。 丹尼尔

Nginx(openresty)反向代理到Apacheredirect问题

我已经设置了一个反向代理,从nginx(openresty)向apache发送请求,使用这个只是为了通过openresty来检查请求,而本质上是服务器在apache上运行。 问题是apache是​​在端口8080和nginx在80,所以每当Apache做一个redirect它redirect到端口8080,我还没有find任何确凿的方法来防止这个,而是有它到端口80。 我的nginx服务器configuration如下 server { listen 80 default_server; server_name localhost; client_max_body_size 1024m; client_body_timeout 300s; location / { proxy_pass http://127.0.0.1:8080; 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; } } 没有卢加虽然。 至于Apache: <VirtualHost *:8080> UseCanonicalName Off ServerName domain.com ServerAdmin [email protected] DocumentRoot /home/user1/environments/production </VirtualHost> <VirtualHost *:8080> ServerAlias *.*.domain.com VirtualDocumentRoot /home/%2/environments/%1 </VirtualHost> <VirtualHost *:8080> […]

如何在apache的反向代理configuration中将一个url重写到外部域

我有这样的configuration <VirtualHost *:80> ProxyPreserveHost Off ProxyRequests Off ServerName mooo.com ServerAlias www.mooo.com ProxyPass / http://localhost:8000/ ProxyPassReverse / http://localhost:8000/ RewriteEngine on RewriteRule "^/foo\.html$" "/admin/" [PT] </VirtualHost> 这工作正常。 现在我想重写foo.html到一些其他的外部域。 例如说,当用户打开mooo.com/foo.html我需要服务器example.com我试过 RewriteRule "^/foo\.html$" "http://example.com" [PT] 但不工作我怎么能解决这个问题?

Apache:使用SSL连接到代理服务器时,会检查错误的主机名

我正在尝试使这个设置工作: 反向代理:启用SSL,并使用Let's Encrypt证书面向互联网(reverse-proxy.com)。 目标:通过使用内部证书链(target.internal)启用SSL的反向代理访问的站点。 所以连接应该是: 客户端反向代理TLS握手 反向代理以定位TLS握手[failling] 我做了什么好事: 将我的根CA证书添加到代理服务器 向目标添加证书,密钥和链 尝试成功openssl s_client -connect target.internal:443 -prexit -CAfile /var/certs/root-ca.crt从反向代理 但是Apache失败了,因为当试图连接到“target.internal”时,它想要在目标证书中find主机名“reverse-proxy.com”,而目标证书是为“target.internal”制作的。 我在我的日志中有这个错误: Cert does not match for name 'reverse-proxy.com' 它将证书链从“root-ca.crt”成功移到“target.internal.crt”后打印出来。 我不明白Apache为什么不寻找为“target.internal”制作的证书。 有人有一个想法? 谢谢。 编辑: Listen 0.0.0.0:443 https SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog SSLSessionCache shmcb:/run/httpd/sslcache(512000) SSLSessionCacheTimeout 300 SSLRandomSeed startup file:/dev/urandom 256 SSLRandomSeed connect builtin SSLCryptoDevice builtin <VirtualHost _default_:443> ErrorLog logs/ssl_error_log TransferLog logs/ssl_access_log […]