标签: reverse-proxy

Nginx反向代理缓存失效策略

我一直在使用Nginx 0.8.5作为缓存反向代理来构建一个类似自定义cdn的解决方案,以加快我们网站的加载时间.到目前为止它工作得很好,除非高速缓存失效真的很复杂,即使安装了高速缓存清除模块也是如此.

例如,有时我们可能需要一次使100个URL无效,这需要100个不同的请求才能发送到每个缓存反向代理服务器.

这几乎不适用于设置的两个缓存服务器,我们的计划是扩展到20台服务器,因此我们需要找到更好的解决方案.有任何想法吗?

简单地重新配置Nginx是行不通的,我确信我们需要自定义代码.我们不想参与自定义Nginx模块开发.

caching reverse-proxy nginx purge

6
推荐指数
1
解决办法
1772
查看次数

将代理heroku应用程序反向代理到wordpress博客

我已经设法在config.ru中设置了我的heroku应用程序的反向代理

require ::File.expand_path('../config/environment',  __FILE__)
use Rack::ReverseProxy do  
   reverse_proxy /^\/blog(.*)$/, 'http://blog.domain.com$1', opts={:preserve_host => true}
end
run Appname::Application
Run Code Online (Sandbox Code Playgroud)

这允许我的heroku应用程序在domain.com上运行,并且当wordpress网站提供blog.domain.com时,domain.com/blog显示为URL.到目前为止很棒.

wordpress网站在访问domain.com/blog时得到了正确的服务,但是当我进入任何更深层次的页面时,如单个帖子wordpress会引发错误.我在表格的网址中使用了包含日期和标题的永久链接:domian.com/blog/2012/07/a-great-blog-post - Worpress现在似乎不喜欢这样.当我将链接切换回表单domain.com/blog/?p=4时,页面成功提供.

在inial domain.com/blog正确之后,它似乎无法处理和排序斜杠.我觉得奇怪的是domain.com/blog/wp-admin(和整个WP管理应用程序)工作没有任何打嗝.

任何人都可以看到任何明显的问题为什么带有多个斜杠'/'的页面/帖子可能会导致问题?

提前致谢!

wordpress reverse-proxy heroku

6
推荐指数
1
解决办法
1424
查看次数

Play Framework可以充当代理服务器还是反向代理?

我有客户端:C,服务器:S(例如在端口7000上的本地ip 10.0.0.1上)和Web服务器:W(例如在www.example.com上)

C想通过Web路径联系S:http://www.example.com/path_for_server_S

所以W充当前向代理

现在S将通过相同的路径联系C:http://www.example.com/path_for_server_S

所以现在W充当反向代理

然后在Apache中,这将是一个常见的配置,如下所示:

ProxyPass /path_for_server_S http://10.0.0.1:7000
ProxyPassReverse /path_for_server_S http://10.0.0.1:7000
Run Code Online (Sandbox Code Playgroud)

已经有内置Web服务器的Play Framework可以处理这种情况吗?

搜索了很多,没事发现:)

proxy reverse-proxy playframework

6
推荐指数
1
解决办法
3265
查看次数

301在代理后面运行非标准端口的nginx机器上重定向

我有一个处理PHP请求的nginx服务器,但它被配置为侦听非标准端口(端口12345或其他东西).我无法改变监听端口,因为企业IT部门说"不"

数据中心有一个代理服务器将来自www.domain.com:80的请求转发到端口12345上的nginx框.

我有一些静态的301重定向,我需要将其放置到位,但我会遇到意想不到的行为.

示例重定向在site.conf"server {}"块中:

rewrite ^/foo$ /bar/foo/ permanent;
Run Code Online (Sandbox Code Playgroud)

当我尝试访问www.domain.com/foo时,会发生重定向,但它会尝试将浏览器转发到www.domain.com:12345/bar/foo/

我的问题是,如何让nginx将用户重定向到正确的端口(www.domain.com/bar/foo/)?

也许更好的问题是,做我要问的正确方法是什么?有50多个重定向需要进入,我宁愿不为每个重定向创建一个"位置"部分.

redirect reverse-proxy nginx

6
推荐指数
1
解决办法
1692
查看次数

使用http-proxy对新端口的代理请求

我使用这个代码我想创建代理,所有应用程序调用端口3000将被"引导"到端口3002

var http = require('http'),
    httpProxy = require('http-proxy');

 var proxy = httpProxy.createProxyServer();

   http.createServer(function (req, res) {
    proxy.web(req, res, {
      target: 'http://localhost:3002'
    });
}).listen(3000);

// Create target server
http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2));
  res.end();
}).listen(3002);
Run Code Online (Sandbox Code Playgroud)

现在,当我使用原始端口(3000)运行应用程序时,我在浏览器中看到了

请求成功代理到3002

  • 当我将端口(在浏览器中)更改为3002时,我仍然收到 相同的消息,为什么?好吗?

  • 我应该在第二个创建服务器中生产什么?我的意思是代替

    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, …
    Run Code Online (Sandbox Code Playgroud)

javascript proxy reverse-proxy node.js node-http-proxy

6
推荐指数
1
解决办法
225
查看次数

具有"混合内容"问题的keycloak apache服务器配置

在我的apache服务器后面配置keycloak有问题,

混合内容:" https://dev.mydomain.com/auth/admin/master/console/ " 页面是通过HTTPS加载的,但请求了一个不安全的脚本" http://dev.mydomain.com/auth/resources /1.7.0.final/admin/keycloak/js/controllers/groups.js '.此请求已被阻止; 内容必须通过HTTPS提供.

我的apache配置是,

ServerName dev.mydomain.com 
ServerAdmin dev@mydomain.com



SSLEngine on
SSLCertificateFile /opt/mydomain/domains/dev.mydomain.com/apache/dev.mydomain.com.crt 
SSLCertificateKeyFile /opt/mydomain/domains/dev.mydomain.com/apache/dev.mydomain.com.key 
SSLCertificateChainFile /opt/mydomain/domains/dev.mydomain.com/apache/dev.mydomain.com.ca-bundle


DocumentRoot /opt/mydomain/domains/dev.mydomain.com/apache/htdocs

<Directory /opt/mydomain/domains/dev.mydomain.com/apache/htdocs>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
    Require all granted
</Directory>

ProxyRequests Off

ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"

<Proxy  https://dev.mydomain.com/*  >
   Order deny,allow
   Deny from all
   Allow from all
 </Proxy>



ProxyPass /auth http://localhost:10082/auth nocanon
ProxyPassReverse /auth http://localhost:10082/auth
Run Code Online (Sandbox Code Playgroud)

知道什么是错的吗?

apache reverse-proxy mod-proxy httpd.conf keycloak

6
推荐指数
1
解决办法
5320
查看次数

docker login返回404 for artifactory

我在artfactory中为docker存储库配置了以下nginx

server {
    listen 2222 ssl;

    server_name rproxy.company.com;
    if ($http_x_forwarded_proto = '') {
        set $http_x_forwarded_proto  $scheme;
    }

    rewrite ^/(v1|v2)/(.*) /artifactory/api/docker/docker-dev/$1/$2;
    client_max_body_size 0;
    chunked_transfer_encoding on;

    location / {
    allow all;
    proxy_read_timeout  900;
    proxy_pass_header   Server;
    proxy_cookie_path ~*^/.* /;
    proxy_set_header   X-Artifactory-Override-Base-Url $http_x_forwarded_proto://$host:$server_port;
    proxy_set_header    X-Forwarded-Port  $server_port;
    proxy_set_header    X-Forwarded-Proto $http_x_forwarded_proto;
    proxy_set_header    Host              $http_host;
    proxy_set_header    X-Forwarded-For   $proxy_add_x_forwarded_for;
    proxy_pass http://artifactory_lb;
    }
Run Code Online (Sandbox Code Playgroud)

但是docker登录rproxy.compan.com:2222返回404

这是此请求的访问日志

"GET /api/docker/docker-dev/v2/token?account=myUsre&client_id=docker&offline_token=true&service=rproxy.company.com%3A2222 HTTP/1.1"404 473" - ""docker/1.11.0 go/go1.5.4 git-commit/4dc5990 kernel/3.13.0-24-generic os/linux arch/amd64 UpstreamClient(Docker-Client/1.11.0\x5C(linux\x5C))"

该命令curl -umyUser:myPass "https://rproxy.company.com:2222/v2/auth" 返回正确的身份验证令牌

我也使用Docker版本1.11和Artifactory版本4.60.任何指向我可能缺少的东西?

是否还需要从docker reositories的Web界面配置反向代理?

reverse-proxy nginx artifactory docker

6
推荐指数
1
解决办法
2457
查看次数

将HTTP/2从h2反向代理到h2c

我们有一个java web服务器,可以通过h2c(HTTP/2明文)提供内容

我们希望将使用h2(即SSL上的标准HTTP/2)建立的代理连接反向到h2c中的java服务器.

在nginx上启用HTTP/2非常简单,处理传入的h2连接工作正常.

我们如何告诉nginx使用h2c代替连接而不是http/1.1?

注意:非nginx解决方案可能是可以接受的

server {
    listen       443 ssl http2 default_server;
    server_name  localhost;

    ssl_certificate      /opt/nginx/certificates/???.pem;
    ssl_certificate_key  /opt/nginx/certificates/???.pk8.key.pem;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        proxy_pass http://localhost:8080/;  ## <---- h2c here rather than http/1.1
    }
}
Run Code Online (Sandbox Code Playgroud)

结论 (2016年6月)

这可以使用haproxy使用配置文件来完成,如下所示.

查询(HttpServletRequest) req.getProtocol()清楚回报HTTP/2.0

global
tune.ssl.default-dh-param 1024

defaults
timeout connect 10000ms
timeout client 60000ms
timeout server 60000ms

frontend fe_http
mode http
bind *:80
# Redirect to https
redirect scheme https code 301

frontend fe_https
mode …
Run Code Online (Sandbox Code Playgroud)

java reverse-proxy nginx haproxy http2

6
推荐指数
1
解决办法
1510
查看次数

Nginx反向代理错误:14077438:SSL SSL_do_handshake()失败

所以我使用以下设置为网站创建一个反向代理,如下所示.

  server {
     listen 80;
     server_name mysite.com;
     access_log  /var/log/nginx/access.log;
     error_log  /var/log/nginx/error.log;
     root /home/ubuntu/p3;
   location / {
     proxy_pass  https://mysiter.com/;
     proxy_redirect  https://mysiter.com/ $host;
     proxy_set_header Accept-Encoding "";
    }
  }
Run Code Online (Sandbox Code Playgroud)

但得到BAD GATE WAY 502错误,以下是日志.

2016/08/13 09:42:28 [error] 26809#0: *60 SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error) while SSL handshaking to upstream, client: 103.255.5.68, server: mysite.com, request: "GET / HTTP/1.1", upstream: "https://105.27.188.213:443/", host: "mysite.com"
2016/08/13 09:42:28 [error] 26809#0: *60 SSL_do_handshake() failed (SSL: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error) while SSL handshaking to upstream, client: 103.255.5.68, …
Run Code Online (Sandbox Code Playgroud)

ssl proxy reverse-proxy nginx

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

如何在docker后端的traefik中设置默认主机容器?

我有一个使用traefik的反向代理设置。这很棒!

我试图弄清楚如何配置它,以便当有人访问HOSTNAMEwww.HOSTNAME时,我可以将它默认路由到我选择的某个容器/子域。假定有效的DNS记录。

在这里有一个配置toml文件。然后,我启动一堆容器,docker后端会监视并拾取这些容器。例如,

static:
    image: myrepo/static
    volumes:
      - /www/static:/www/static
    depends_on:
      - traefik
    labels:
      - "traefik.backend=static"
      - "traefik.frontend.rule=Host:static.$HOSTNAME"
Run Code Online (Sandbox Code Playgroud)

浏览可static.HOSTNAME立即使用。雅虎!但是假设我要浏览HOSTNAME也可以static.HOSTNAME

任何提示都很棒!谢谢。

reverse-proxy traefik

6
推荐指数
1
解决办法
1657
查看次数