我用谷歌搜索过,搜索过 StackOverflow 和这里。我仍然不能完全理解什么或为什么有人会使用 Squid。
到目前为止,我只能发现它是某种缓存,可以减少您的服务器(即 Apache)必须做的工作。那么有人可以确切地澄清 Squid 的作用,更重要的是,我为什么要使用 Squid?
我有一个大型社交网站,所以也许它会有益于提供图像或其他东西,我目前正在运行与 Apache 分开的 lighttpd,仅用于提供图像。
我使用 Apache2 作为 tomcat 的反向代理,我的配置类似于:
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)
我的问题是:我可以配置 Apache 以在 Tomcat 关闭时显示礼貌页面(“正在建设中”的 HTML 静态页面)吗?
我已将我的VirtualHost example.com配置为将所有请求代理到 Tomcat 服务器
ProxyPass / http://localhost:8088/app
ProxyPassReverse / http://localhost:8088/app
Run Code Online (Sandbox Code Playgroud)
这适用于example.com/page 之类的URL ,但对于example.com和example.com/我得到了这个重定向响应,这显然不会导致任何结果。
HTTP/1.1 302 Moved Temporarily
Date: Wed, 06 Jul 2011 21:13:37 GMT
Server: Apache-Coyote/1.1 <-- the redirect comes from tomcat
Location: http://example.com/app/ <-- nonsense
...
Run Code Online (Sandbox Code Playgroud)
我能做些什么来修复它?最好在 Apache 配置中。
我正在使用 Apache 2 和 Tomcat 7
这看起来很简单,但我不能让它工作。
我有一个非常简单的网络服务器,只需要做两件事:
这不起作用:
RewriteRule ^$ http://localhost:4000
Run Code Online (Sandbox Code Playgroud)
从请求者的角度(即,在客户端的机器上),这将流量重定向回 localhost:4000。
我对 VirtualHost 的有限理解表明这是针对 atom.example.com 之类的,而不是 example.com/atom
我想我必须使用 ProxyReverse,但我找不到正确的组合。
更新:尝试由 Shane Madden 给出的 ProxyPass/ProxyReverse 建议会在错误日志文件中产生:
[Thu Mar 15 11:59:15 2012] [error] (13)Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:4000 (localhost) failed
[Thu Mar 15 11:59:15 2012] [error] ap_proxy_connect_backend disabling worker for (localhost)
[Thu Mar 15 11:59:17 2012] [error] proxy: HTTP: disabled connection for (localhost)
Run Code Online (Sandbox Code Playgroud)
(本地服务器肯定运行在127.0.0.1:4000)
我只在 2 个后端服务器前面设置了一个 HAProxy,有一个特定的配置:任何请求都应该转到服务器 A;但是,如果服务器 A 返回 5xx 错误代码,则所有请求都应转到备用服务器 B。当 A 返回“up”时,所有请求都应转到 A。
我正在尝试这种配置:
backend example_cluster
balance roundrobin
option httpclose
option forwardfor
option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com
http-check disable-on-404
default-server error-limit 1 on-error mark-down
redirect scheme https if !{ ssl_fc }
server node1 1.2.3.4:80 check observe layer7
server node_back 5.6.7.8:443 backup ssl verify none
Run Code Online (Sandbox Code Playgroud)
但它不起作用有两个原因:
如果我删除“option httpchk”行,以及它下面的两行;我还删除了服务器 A 中的“观察层 7”;HAProxy 通过将所有请求路由到节点 A 来工作。但是,很明显,当服务器 A 返回 500 …
我目前正在尝试在我的个人服务器上运行hack.chat。
长话短说,它由两台服务器组成。第一个是一个简单的 httpd 服务器,提供 javascript 和 CSS。第二个,聊天系统,是一个 node.js 服务器,javascript 使用 websocket 连接到它。问题来了。
我希望全部使用端口 80,在单个 IP 上使用不同的域名,在 Nginx 中使用单独的服务器块。
我遵循了 Nginx websocket 文档,但这不起作用。当 websocket 尝试连接时,它总是得到 200 返回码,而如果我理解得很好,它应该得到 101(切换协议)。
我的 Nginx 版本是 1.8.0,我的服务器在 gentoo 和 linux 4.0.5 上运行
这是相关 nginx conf 文件的转储:
nginx.conf:
user nginx nginx;
worker_processes 1;
error_log /var/log/nginx/error_log info;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main
'$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" ' …Run Code Online (Sandbox Code Playgroud) 在 Apache 2.4 中,您可以使用以下命令将HTTP连接反向代理到本地Unix套接字:[1]
ProxyPass unix:/path/to/app.sock|http://example.com/app/name
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法将WebSocket连接反向代理到本地TCP套接字:[2]
ProxyPass ws://127.0.0.1:12345/app/name
Run Code Online (Sandbox Code Playgroud)
但是如何将WebSocket连接反向代理到Unix套接字?[?]
我正在尝试为具有 localhost 静态资源副本的反向代理服务器设置故障转移,这些资源通常由内容管理系统提供服务。我曾经wget为了故障转移的目的抓取动态站点的静态副本。
我尝试使用类似于Apache 的 ProxyPass 指令的回退位置的配置?让事情开始,这是一个相当简单的,但我在标题中遇到错误。
这是我的(经过消毒的)代理配置:
DocumentRoot /var/www/www.example.com/htdocs
ProxyRequests Off
ProxyPreserveHost On
ProxyPass "/site/" "balancer://cms"
ProxyPassReverse "/site/" "balancer://cms"
ProxyPassReverse "/site/" "http://ip-10-1-1-229.ec2.internal/site/"
<Proxy "balancer://cms">
#BalancerMember "http://ip-10-1-1-229.ec2.internal/site/" loadfactor=1
# For localhost services, a backup of the CMS's site
BalancerMember "http://127.0.0.1/site-backup/www.example.com/site/" loadfactor=10 status=+H
</Proxy>
<Directory "/var/www/www.example.com/htdocs/site-backup">
Order allow,deny
Allow from all
Options Indexes FollowSymlinks
DirectoryIndex index.html
</Directory>
Run Code Online (Sandbox Code Playgroud)
(在这里,我已经注释掉了进入真正 CMS 系统的平衡器成员——那部分工作得很好——这样我就可以测试本地的静态副本。)
有一个index.html文件,/var/www/www.example.com/site-backup/www.example.com/当我尝试点击时它确实被加载了http://www.example.com/site/,但是页面的其他资源(CSS、图像等)都没有被加载。他们在页面中有 URL,例如:
我有一个文件,foo.png在这个位置:
/var/www/www.example.com/htdocs/site-backup/www.example.com/site/sites/default/files/foo.png
Run Code Online (Sandbox Code Playgroud)
但是当浏览器加载该图像时,我会收到500 Internal …
我有一个 IIS 服务器 [在 WinServer 2016 上],它充当一些 Kestrel Web 服务器的反向代理。现在我正在尝试设置 IIS 以转发所有 X-Forwarded-* 标头。对于 X-Forwarded-For 和 X-Forwarded-Proto 标头,一切正常,但不适用于 X-Forwarded-Host。
这是服务器级别的“允许的服务器变量”:
这是我在调试器中看到的,当 HTTP 请求命中 Kestrel 网络服务器时
不幸的是,我无法从 PROD 服务器创建转储,但由于一些功能无法正常工作,情况应该类似于 DEV 环境。
在阅读了几篇关于如何将 IIS 设置为反向代理的文章后,我的印象是所有 X-Forwarded-* 标头都应该自动添加。或者,XFH 是一个例外,我需要手动设置它吗?
我将不胜感激任何形式的帮助!
我有一个在 docker 容器上运行的网站,并且我在主机的 apache 上创建了一个 VirtualHost,它对容器(在主机的 8280 端口上)执行反向代理。所以我有:
<VirtualHost *:443>
ServerName www.example.com
DirectoryIndex index.php index.html
SetOutputFilter SUBSTITUTE,DEFLATE
ProxyPass / http://localname:8280/
ProxyPassReverse / http://localname:8280/
Substitute "s|http://localname:8280/|https://www.example.com/|i"
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateKeyFile /path-to/privkey.pem
SSLCertificateFile /path-to/cert.pem
SSLCertificateChainFile /path-to/chain.pem
<Proxy *>
Order deny,allow
Allow from all
Allow from localhost
</Proxy>
</VirtualHost>
<VirtualHost *:80>
ServerName www.example.com
ServerAlias www.example.com
Redirect permanent / https://www.example.com/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
代理运行良好,我在浏览器中写入 www.example.com 时有响应,但我的所有链接都指向http://localname:8280(如浏览器控制台中所示)和混合内容错误,这就是为什么我已经放置了替代指令,但它不起作用。
我正在使用 apache 文档中 mod_substitute 的配置。
https://httpd.apache.org/docs/2.4/mod/mod_substitute.html
但这不起作用,任何变化。docker 容器基于默认配置的 bitnami/apache 镜像。
任何帮助,将不胜感激。