我最近听说 Nginx 为其反向代理功能添加了缓存。我环顾四周,但找不到太多关于它的信息。
我想将 Nginx 设置为 Apache/Django 前面的缓存反向代理:将一些(但不是全部)动态页面的 Nginx 代理请求发送到 Apache,然后缓存生成的页面并从缓存中为这些页面提供后续请求。
理想情况下,我想以两种方式使缓存无效:
是否可以设置 Nginx 来做到这一点?如何?
我正在寻找一种简单的方法从我的本地机器 A SSH 通过代理 B 到目标主机 C。与 C 上的公钥一起使用的私钥在 B 上,但我不能把那个钥匙放在我的本地机器上。有小费吗?
另外,我希望能够使用 ~/.ssh/config 执行此操作。
谢谢!
在 Nginx 中,我们一直在尝试重定向 URL,如下所示:
http://example.com/some/path -> http://192.168.1.24
Run Code Online (Sandbox Code Playgroud)
用户仍然可以在浏览器中看到原始 URL。一旦用户被重定向,假设他们点击链接到/section/index.html,我们希望它发出一个导致重定向的请求
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
Run Code Online (Sandbox Code Playgroud)
并再次保留原始 URL。
我们的尝试涉及使用代理和重写规则的各种解决方案,下面显示了使我们最接近解决方案的配置(请注意,这是 Web 服务器的 Web 服务器配置example.com)。但是,这仍然存在两个问题:
http://192.168.1.24包含/some/path并因此无法提供所需的页面。提供页面后将鼠标悬停在链接上时,/some/pathURL 中缺少
server {
listen 80;
server_name www.example.com;
location /some/path/ {
proxy_pass http://192.168.1.24;
proxy_redirect http://www.example.com/some/path http://192.168.1.24;
proxy_set_header Host $host;
}
location / {
index index.html;
root /var/www/example.com/htdocs;
}
}
Run Code Online (Sandbox Code Playgroud)我们正在寻找一种仅涉及更改example.com. 我们可以更改192.168.1.24(也是 Nginx)上的配置,但是我们想尝试避免这种情况,因为我们需要为数百个通过 代理访问的不同服务器重复此设置example.com。
我想通过非 SSL 站点代理来自 SSL 站点的请求。我的 Apache httpd.conf 如下所示:
<VirtualHost 1.2.3.4:80>
ServerName foo.com
ProxyPass / https://bar.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
因此,当我访问http://foo.com 时,我希望 apache 向https://bar.com发出请求并将其获取的页面发送给我。
相反,我收到了 500 错误,在错误日志中,我看到:
[error] proxy: HTTPS: failed to enable ssl support for 4.3.2.1:443 (bar.com)
Run Code Online (Sandbox Code Playgroud)
大概我在这里遗漏了一个指令。可能是哪个?
别介意安全隐患。我完全理解其中的风险。
如何设置一个 nginx proxy_pass 指令,该指令还将包含发送到代理主机的 HTTP 基本身份验证信息?
这是我需要代理到的 URL 示例:
http://username:password@192.168.0.5/export?uuid=1234567890
Run Code Online (Sandbox Code Playgroud)
最终目标是允许一台服务器在不暴露代理服务器的 URI 的情况下,允许另一台服务器(我们代理的服务器)显示文件。通过遵循此处找到的 Nginx 配置,我现在可以正确运行 90%:
http://kovyrin.net/2010/07/24/nginx-fu-x-accel-redirect-remote/
我只需要添加 HTTP Basic 身份验证以发送到代理服务器
我正在尝试让这 2 个位置指令在 Nginx 中工作,但是在启动 Nginx 时出现了一些错误。
location ~ ^/smx/(test|production) {
proxy_pass http://localhost:8181/cxf;
}
location ~ ^/es/(test|production) {
proxy_pass http://localhost:9200/;
}
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误:
nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
Run Code Online (Sandbox Code Playgroud)
有没有人觉得很熟悉?我在这里错过了什么?
我在 AWS 上的 EC2 机器上部署了一个 API。传入的 HTTPS 请求被传递到弹性负载均衡器。负载均衡器处理 SSL,并将请求传递给 Nginx 服务器,该服务器根据请求 URL 将请求代理到特定服务器。
Nginx 机器需要大量维护工作,尤其是服务器 IP 地址更改时。此外,基于 URL 的代理路由看起来确实是负载均衡器的自然延续。拥有一个健全的基于 Web 或基于 API 的界面来控制 URL 路由将是一个巨大的福音。
是否有任何基于云的路由解决方案可以通过 URL 模式代理 HTTP 请求,替代我的 Nginx 机器?
WebSocket 协议是 HTTP 协议的扩展。但是,Apache2 的代理模块似乎并不知道它,并丢弃了关键的标头,将调用转换为标准的 HTTP 调用。
有没有办法让 Apache2 (1) 理解 WebSocket 或 (2) 只是盲目地传递它得到的任何东西?
说我有一个server和client。我需要像代理一样创建从client到website通过的连接server。
是否可以使用 SSH tunel 来做到这一点,或者我必须安装一些代理服务到server?
我正在尝试让 ProxyPass 在我的 OpenSUSE 13.1 安装上工作。
我试过了:
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_connect
systemctl restart apache2
systemctl reload apache2
Run Code Online (Sandbox Code Playgroud)
(所有组合语句都无济于事)。
我一遍又一遍地得到同样的错误:
SERVER:/etc/apache2 # apache2ctl start -f /etc/apache2/httpd-proxy.conf
AH00526: Syntax error on line 4 of /etc/apache2/httpd-proxy.conf:
Invalid command 'ProxyPass', perhaps misspelled or defined by a module not included in the server configuration
Run Code Online (Sandbox Code Playgroud)
httpd-proxy.conf 看起来像:
<VirtualHost *:80>
DocumentRoot /srv/www/subsite
ServerName www.site.com/subsite
ProxyPass /subsite/ http://localhost:81
ProxyPassReverse /subsite/ http://localhost:81
</Virtualhost>
Run Code Online (Sandbox Code Playgroud)
有谁知道如何让这个 ProxyPass 语句起作用?