标签: reverse-proxy

什么是一个好的缓存反向代理,如果底层应用程序不可用,它可以提供过时的内容?

我正在寻找一个缓存反向代理(类似于鱿鱼或清漆),在发生故障时能够很好地支持服务陈旧内容 - 换句话说,如果我代理的应用程序消失或开始服务于内部服务器错误我' d喜欢缓存继续提供从后端保存的最后一个好的响应.基本上我希望缓存服务器在出现问题时充当额外的保护层.

有人配置过Squid或类似的吗?知道任何支持这种开箱即用的产品吗?

caching reverse-proxy squid varnish

3
推荐指数
1
解决办法
2163
查看次数

Apache Reverse Proxy可以排除某些文件类型吗?

我有一个Apache/Passenger组合服务Rails 3.x和相同的组合服务Rails 2.x通过反向代理服务于Passenger Standalone.我这样做的原因是因为Rails 2.x使用旧版本的Ruby而不是Apache/Passenger使用的Ruby.

但是,Rails 2.x应用程序中有一些PHP,Passenger Standalone无法支持.(由Hongli Lai在乘客讨论小组确认).Hongli建议从反向代理中排除'php'位.

可以这样做,如果是这样的话怎么办?


编辑以显示如何设置反向代理:

<VirtualHost *:80>
   ServerName gtt
   DocumentRoot /home/purvez/www/gtt/public
   RailsEnv development
   PassengerEnabled off
   ProxyPass / http://127.0.0.1:3000/
   ProxyPassReverse / http://127.0.0.1:3000/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

另外,如何设置普通网站:

<VirtualHost *:80>
   ServerName testapp
   DocumentRoot /home/purvez/www/testapp/public
   RailsEnv development
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

php apache reverse-proxy

3
推荐指数
1
解决办法
2385
查看次数

Rails 3.2 Rack :: Cache HTTP标头和动作缓存

下午好,

我遇到了一些问题,试图将HTTP缓存与Rack :: Cache和动作缓存相结合(在我的Heroku托管的应用程序上).

单独使用它们似乎正在起作用.启用操作缓存后,页面加载很快,日志会建议缓存.通过控制器中的HTTP缓存(eTag,last_modified和fresh_when),似乎设置了正确的标头.

但是,当我尝试将两者结合起来时,它似乎是动作缓存,但HTTP标头总是max_age:0,must_revalidate.为什么是这样?难道我做错了什么?

例如,这是我的"home"动作中的代码:

class StaticPagesController < ApplicationController
  layout 'public'

  caches_action :about, :contact, ......, :home, .....

  ......

  def home
    last_modified = File.mtime("#{Rails.root}/app/views/static_pages/home.html.haml")
    fresh_when last_modified: last_modified , public: true, etag: last_modified
    expires_in 10.seconds, :public => true       
  end
Run Code Online (Sandbox Code Playgroud)

对于所有意图和目的,这应该有一个公共缓存控制标记,max-age 10 no?

$ curl -I http://myapp-staging.herokuapp.com/

HTTP/1.1 200 OK
Cache-Control: max-age=0, private, must-revalidate
Content-Type: text/html; charset=utf-8
Date: Thu, 24 May 2012 06:50:45 GMT
Etag: "997dacac05aa4c73f5a6861c9f5a9db0"
Status: 200 OK
Vary: Accept-Encoding
X-Rack-Cache: stale, invalid
X-Request-Id: 078d86423f234da1ac41b418825618c2
X-Runtime: 0.005902
X-Ua-Compatible: IE=Edge,chrome=1
Connection: …
Run Code Online (Sandbox Code Playgroud)

caching reverse-proxy ruby-on-rails rack-cache

3
推荐指数
1
解决办法
2576
查看次数

如何优化此nginx代理缓存配置?

我想缓存*.htmlNginx反向代理中的所有文件,所以我添加了配置:

# Original configuration
location = / {
    proxy_pass   http://192.168.12.12:91;
    proxy_set_header        Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
}

# Added for cache
location ~ \.html {
    proxy_pass   http://192.168.12.12:91;
    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_cache cache_one;
    proxy_cache_key $host$uri$is_args$args;
    proxy_cache_valid 200 301 302 1m;
    proxy_cache_valid any 1m;
    expires     1m;
}
Run Code Online (Sandbox Code Playgroud)

重复两次proxy_passproxy_set_header感觉不好

我该如何优化呢?谢谢!

linux ubuntu proxy reverse-proxy nginx

3
推荐指数
1
解决办法
6102
查看次数

Nginx代理传递和URL重写

如果我在url中有GET参数(查询字符串),如何触发此规则,否则我将匹配别名.

location ~^/static/photos/.* {
    rewrite ^/static/photos/(.*)$  /DynamicPhotoQualitySwitch/photos/$1  break;
    expires     7d;
    proxy_pass http://foofoofoo.com;
    include /etc/nginx/proxy.conf;
     }
Run Code Online (Sandbox Code Playgroud)

reverse-proxy nginx

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

根据子路径反向代理两台服务器

apache问题。一定很简单,但我失败了。

我正在尝试将apache配置为对其背后的两个服务器的反向代理。棘手的部分是注册代理规则的唯一区别是子路径。

我的想法是:

mydomain.com -> localhost:8083
mydomain.com/api -> localhost:8080/api
Run Code Online (Sandbox Code Playgroud)

目前我的配置是这样的:

<VirtualHost *:80>
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName mydomain.com
        ServerAlias www.mydomain.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass / http://localhost:8083/
        ProxyPassReverse / http://localhost:8083/

        ProxyPass /api http://localhost:8080/api #already tried with slashes on both first and second parameters
        ProxyPassReverse /api http://localhost:8080/api #already tried with slashes on both first and second parameters

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

但是/ api不起作用,它不断将请求发送到8083。为什么有任何想法?

感谢您的关注

apache reverse-proxy

3
推荐指数
1
解决办法
1668
查看次数

将nginx反向代理设置为从另一个docker容器提供服务

我有一个在端口号运行的docker容器中的应用程序3000,暴露给主机(端口3050映射到容器的端口3000),我想使用这个nginx-proxy指向类似于http://localhost/users指向/代理的URL http://localhost:3050/users.

我的docker-compose.yml文件中有这个块:

 nginx_service:
   image: jwilder/nginx-proxy
   container_name: nginx_server
   ports:
    - "80:80"
    - "443:443"
   volumes:
    - ./ssl_certs:/etc/nginx/certs
    - /var/run/docker.sock:/tmp/docker.sock:ro
Run Code Online (Sandbox Code Playgroud)

下面是docker-compose.yml在docker容器中的端口3000上运行我的应用程序中定义的容器:

api:
   build: .
   container_name: api
   environment:
    - VIRTUAL_HOST= service.myserver.com
    - VIRTUAL_PROTO=https
   volumes:
    - "./API:/host"
   links:
    - Mongo:Mongo
   ports:
    - "3050:3000"
Run Code Online (Sandbox Code Playgroud)

在我启动docker容器之后,我可以http://localhost:3050/users在浏览器中打开,但不是http://localhost/users,这给了我一个503错误,服务暂时不可用.

也许我把整个想法弄错了,有人可以用nginx反向代理帮助或纠正我吗?

reverse-proxy nginx docker docker-compose

3
推荐指数
1
解决办法
4819
查看次数

使用Apache 2.4 mod_proxy和基本身份验证在Docker容器中运行Portainer

问:如何使用基本身份验证将Apache 2.4配置为Portainer的反向代理?

Portainer是用于管理Docker容器的UI.Portainer文档有一个示例nginx配置,但遗憾的是没有apache.

apache user-interface reverse-proxy basic-authentication docker

3
推荐指数
1
解决办法
2323
查看次数

将nginx位置重定向/重写为.sock文件(无前缀)

我有一台服务器,上面运行着几个API。其中之一是users-DB以下内容可归结为“ gunicorn”:

location /usersDB/ {
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)

除了当我尝试访问usersDB API的/ helloWorld路由并查看gunicorn.err的日志时,我看到:

GET /usersDB/helloWorld
Run Code Online (Sandbox Code Playgroud)

我希望看到:

GET /helloWorld
Run Code Online (Sandbox Code Playgroud)

当然,gunicorn返回404,这就是我在浏览器中看到的。我试过重写规则:

location /usersDB/ {
    rewrite /usersDB/(.*) /$1 last;
    include proxy_params;
    proxy_pass http://unix:/home/ubuntu/projects/UsersDB-api/app.sock;
}
Run Code Online (Sandbox Code Playgroud)

但是上面的结果导致请求进入了/var/www/htmlhelloWorld替代app.sock的方式。

我知道,如果您对proxy_pass使用url,则只需添加尾随/,但是我不确定在使用sock文件的情况下该怎么做。

如何摆脱/usersDB/nginx中所有路由现在包含的后缀?

sockets reverse-proxy nginx gunicorn

3
推荐指数
1
解决办法
988
查看次数

通过在elm-package.json中设置代理,代理停止在生产服务器上工作

我正在为我的ELM项目使用create-elm-app webpack.并通过设置代理使用代理elm-package.json,这只能在开发服务器上正常工作.当我使用elm-app buildthen代理停止在生产服务器上创建构建时 .任何人都可以建议我解决此问题的任何解决方案.

这是我的elm-package.json

{
"proxy": "https://some.domain.net/",
"version": "1.0.0",
"summary": "helpful summary of your project, less than 80 characters",
"repository": "https://github.com/user/project.git",
"license": "BSD3",
"source-directories": [
    "src"
],
"exposed-modules": [],
"dependencies": {
    "NoRedInk/elm-decode-pipeline": "3.0.0 <= v < 4.0.0",
    "elm-community/list-extra": "7.1.0 <= v < 8.0.0",
    "elm-community/typed-svg": "2.0.0 <= v < 3.0.0",
    "elm-lang/core": "5.0.0 <= v < 6.0.0",
    "elm-lang/html": "2.0.0 <= v < 4.0.1",
    "elm-lang/http": "1.0.0 <= v < 2.0.0",
    "elm-lang/navigation": "2.1.0 <= v < 3.0.0", …
Run Code Online (Sandbox Code Playgroud)

proxy reverse-proxy elm

3
推荐指数
1
解决办法
153
查看次数