HAProxy 和 Nginx 在作为反向代理的能力方面有什么区别?
我正在为内部 API 构建代理,以允许客户端连接而无需安装自签名证书。
客户端(构建、拥有和仅在内部使用)将通过 SSL 连接到 nginx 框,在那里我使用XSendfile在应用程序级别(一个 Rails 应用程序)验证凭据。如果凭据有效,则连接将传递回 nginx,在那里它使用 proxy_pass 将连接发送到上游服务器。
现在这适用于标准的 http 连接,但我正在尝试弄清楚如何将我们的证书添加到混合中。
这个问题几乎是相同的这一个,但尴尬的证书要求。
这甚至可能与 nginx 一起使用吗?有更好的解决方案吗?
我也满足于从客户端的 http -> nginx,以及从 nginx 到 API 的自签名证书。
我有一个反向代理设置,用于从 Internet 访问位于 Intranet 内的第三方应用程序。假设此应用程序位于 URL 上:
https://internalserver:8080/ (只能从内联网访问)
并且代理在:
https://proxyserver/ (可从世界任何地方到达)
代理由 nginx 管理并且工作正常。当用户访问时,https://proxyserver/
他们会在https://internalserver:8080/.
问题在于应用程序在 HTML 响应中写入绝对 URL,因此,当用户单击指向新页面的链接时,浏览器会尝试使用其内部名称定位页面,例如,
https://internalserver:8080/somepage
而不是
https://proxyserver/somepage。
我知道这是一个程序错误,但我无法修改程序。
我可以拦截响应,修改 URL 并使用 nginx 将其(修改后)发送到最终客户端吗?或者也许使用其他工具?
编辑:我之前看过这个问题,但我的情况更具体,引用的问题要求进行通用修改。在这种情况下,fast-cgi ad hoc 程序是最好的解决方案,我想要的是(我认为)更常见场景的更具体的解决方案。虽然快速 cgi 程序可以工作,但我正在寻找一种最简单、可能更强大并在现实世界中得到证明的解决方案,适用于这种情况。
我有一个小型 Web 服务器,它在端口 5010 而不是 80 上提供请求。
我想使用 nginx 作为前端代理来接收端口 80 上的请求,然后让这些请求由端口 5010 处理。
我已经成功安装了 nginx,它在 Ubuntu Karmic 上运行流畅。
但是,我尝试重新配置默认的 nginx.conf 并没有成功。
我尝试在服务器指令中包含端口 5010 的监听参数。
我也尝试过 proxy_pass 指令。
有关需要进行更改的任何建议或需要设置的指令,以便仅进行端口转发。
我需要使用一个外部 IP 地址通过 https 为多个应用程序提供服务。
不应在反向代理上管理 ssl 证书。它们安装在应用程序服务器上。
是否可以将反向代理配置为使用 SNI 并通过 ssl 在端点处终止?
这可以使用 Nginx 或 Apache 之类的东西吗?配置是什么样的?
我有多个子域,都指向一台机器和一个 IP 地址。在这台机器上,我想让 nginx 充当反向代理,并且根据用于访问机器的子域,我希望它反向代理到不同的服务器。我见过的所有使用 nginx 作为反向代理的示例都使用location,但据我所知,这仅适用于路径,不适用于不同的子域。我怎样才能达到我想要的?
当然,我不是第一个尝试从 为域提供服务example.com的人example.net/bbb,但我还没有找到解决方案。
我的 NGINX 配置遵循指导方针,看起来像这样:
server {
listen 80;
server_name example.net;
root /path/to/aaa;
location /bbb/ {
proxy_pass http://example.com/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
try_files $uri $uri/ /index.html;
}
location ~ \.(svg|ttf|js|css|svgz|eot|otf|woff|jpg|jpeg|gif|png|ico)$ {
access_log off;
log_not_found off;
expires max;
}
}
Run Code Online (Sandbox Code Playgroud)
我可以设法渲染example.comin的根,example.net/bbb但是:
example.net/bbb/some/path预期和不工作index.html的example.net呈现。
中的任何资产example.com/assets都会给出 404,因为浏览器会查找example.net/assets. 如果我能在不到处放置绝对路径的情况下解决这个问题,那就太好了。
我有一台服务器,它充当网络中 cPanel 邮件服务器的前端。前端服务器上的 apache 代理运行了 152 天没有故障然后突然我现在在使用它访问邮件服务器的 web 邮件客户端时出现 500/502 错误。
前端服务器使用签名 SSL 证书,cPanel 服务器使用自签名证书。这是前端服务器第一次开始发生时的错误日志输出:
[Tue Sep 10 18:22:52.959291 2013] [proxy:error] [pid 19531] (502)Unknown error 502: [client 173.xx.xx.xx:9558] AH01084: pass request body failed to 184.xx.xx.xx:2096 (184.xx.xx.xx), referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
[Tue Sep 10 18:22:52.959469 2013] [proxy:error] [pid 19531] [client 173.xx.xx.xx:9558] AH00898: Error during SSL Handshake with remote server returned by /cpsess12385596/3rdparty/roundcube/, referer: https://domain.com:2096/cpsess12385596/3rdparty/roundcube/?_task=mail&_refresh=1&_mbox=INBOX
前端服务器是运行Apache/2.4.6 (Amazon)
My VirtualHost的 EC2 实例,此服务器上的代理设置如下:
< VirtualHost *:2096>
ServerName domain.com
SSLEngine on
SSLProxyEngine on
SSLProxyVerify none
SSLProxyCheckPeerCN …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Ubuntu机器上设置Madsonic并在它前面运行 Nginx。问题是,当我尝试通过 Web 界面上传内容时,我不断收到此警告:
31115#0: *14 a client request body is buffered to a temporary file
Run Code Online (Sandbox Code Playgroud)
这也解释了为什么上传窗口上的进度条不起作用。这是我的相关 Nginx 配置:
# proxy the madsonic server here
location / {
proxy_pass https://madsonic-server/;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering off;
allow all;
proxy_http_version 1.1;
proxy_set_header Host $http_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-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
client_body_buffer_size 0;
client_max_body_size 0;
proxy_max_temp_file_size 0;
proxy_read_timeout 18000;
proxy_send_timeout 18000;
gzip off;
}
Run Code Online (Sandbox Code Playgroud)
我目前使用的是 Nginx 1.9.12。
我想要实现的是让 Nginx 根本不使用请求正文缓冲区, …
reverse-proxy ×10
nginx ×7
ssl ×2
amazon-ec2 ×1
apache-2.2 ×1
buffer ×1
haproxy ×1
https ×1
proxy ×1
proxypass ×1
sni ×1
subdomain ×1
ubuntu ×1
ubuntu-9.10 ×1