我正在尝试设置我的apache(版本2.2.3)作为反向代理.我在公共服务器上配置了apache,如下所述http://www.askapache.com/htaccess/reverse-proxy-apache.html
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule headers_module modules/mod_headers.so
LoadFile /usr/lib/libxml2.so
LoadModule proxy_html_module modules/mod_proxy_html.so
ProxyRequests off
ProxyPass /app1/ http://internal1.example.com/page1/
ProxyPassReverse /app1/ http://internal1.example.com/page1/
ProxyHTMLURLMap http://internal1.example.com/page1/ /app1/
internal1是本地网络中的其他服务器.
主页(www.example.com/app1/)显示正确,但是当我的内部服务器进行重定向时出现问题.在这种情况下,我的浏览器(Firefox 3.5.3或Internet Explorer 7)搜索本地网络中的地址(internal1.example.com/page1/).对我来说,apache忽略了ProxyPassReverse指令.
我检查了缓存路径/ usr/local/nginx/proxy_cache.我多次访问一些网址后找不到缓存文件.
我的配置:ngnix.conf
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
client_body_buffer_size 512k;
proxy_temp_file_write_size 128k;
proxy_temp_path /usr/local/nginx/proxy_temp;
proxy_cache_path /usr/local/nginx/proxy_cache levels=1:2 keys_zone=content:20m inactive=1d max_size=100m;
gzip on;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Run Code Online (Sandbox Code Playgroud)
默认
server {
listen 80;
server_name 208.115.202.87;
location /test {
proxy_cache content;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 15m;
proxy_pass http://aaa.com/;
}
Run Code Online (Sandbox Code Playgroud) 我有一个在端口上运行的Rails应用程序3101,我通过Apache反向代理设置将其提供给互联网(就像Phusion在此博客文章中建议的那样).
我正在使用Devise + OmniAuth来处理Facebook身份验证.
但是当我尝试通过Facebook进行身份验证时,我被重定向到了网址: http://mydomain.com:3101/my_callback_path
我启动rails应用程序,passenger start -a 127.0.0.1 -p 3101 -d我的Apache设置是:
<VirtualHost *:80>
ServerName mydomain.com
PassengerEnabled off
ProxyPass / http://127.0.0.1:3101/
ProxyPassReverse / http://127.0.0.1:3101
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我发现像一些答案,这个和这个,但他们都打算Nginx的设置.
我试过使用初始化程序,OmniAuth.config.full_host = 'http://my domain.com'但我想知道我的apache设置中是否没有丢失配置(如前面的答案).
提前致谢.
我使用.NET 4.0和Sockets使用hybi-17规范构建了一个WebSocket聊天服务器.如果浏览器连接到端口81上的聊天服务器,则一切都按预期运行.但是由于公司防火墙等 - 我需要浏览器连接到端口80,因为这需要全世界的每台PC都可以访问.
所以我使用IIS 7作为反向代理.我已经设法让浏览器连接到IIS 7上的ws:// localhost/chatProxy,然后将请求代理到http:// localhost:81/chatProxy,其中websocket服务器正在侦听.
Websocket服务器执行握手并为连接创建套接字,然后返回到侦听状态.
问题是,在客户端,websocket"onopen"事件永远不会被触发.就好像IIS不会将请求发送回浏览器一样.
任何帮助将受到高度赞赏!
提前致谢!!
我正在尝试将Lighttpd配置为充当反向代理.我希望有几个URL代理到不同端口上的不同服务器,可以在同一台机器上,也可以在本地网络中.
例如:
// static/socket/ajax
Lighttpd将代理所有连接,除了那些连接/static.我想/static直接从这个lighttpd实例提供所有请求.
这是mod_proxy的配置文件:
##
# Serve Static Content via Lighttpd.
#
$HTTP["url"] =~ "^/static/" {
server.document-root = "/path/to/my/static/files"
accesslog.filename = rootdir + "/var/log/static.log"
server.errorlog = rootdir + "/var/log/static.error.log"
}
##
# Proxy to instance of Socket.io.
#
else $HTTP["url"] =~ "^/socket/" {
accesslog.filename = rootdir + "/var/log/socket.log"
server.errorlog = rootdir + "/var/log/socket.error.log"
proxy.server = (
"" => ( (
"host" => "127.0.0.1",
"port" => 3000
) )
)
}
##
# Proxy to …Run Code Online (Sandbox Code Playgroud) 我想为在Ubuntu服务器12.04.1上运行的Apache的反向代理站点添加基本身份验证.
Web应用程序是在Java EE容器上运行的Jenkins.
我在httpd.conf中添加了以下配置,
ProxyPass /jenkins/ http://localhost:8080/jenkins/¬
ProxyPassReverse /jenkins/ http://localhost:8080/jenkins/¬
ProxyRequests Off¬
ProxyPreserveHost On¬
¬
<Proxy http://localhost:8080/jenkins*>¬
Order deny,allow¬
Deny from all¬
? AllowOverride AuthConfig¬
? AuthType Basic¬
AuthName "jenkins"¬
? AuthBasicProvider file¬
AuthUserFile /etc/apache2/passfile¬
? Require valid-user¬
? Satisfy any¬
</Proxy>
Run Code Online (Sandbox Code Playgroud)
当我使用错误的密码或不存在的用户名进行身份验证时,我可以在error.log of apache中找到以下消息,
[星期六10月27日17:51:59 2012] [错误] [客户端222.128.175.95]用户kane:"/ jenkins /"验证失败:密码不匹配[星期六27 27:52:04 2012] [错误] [客户端222.128.175.95]用户阿拉丁未找到:/ jenkins /
在passfile中使用正确的用户和密码时,不会记录任何消息.虽然我在网络浏览器中输入了正确的用户和密码,但验证对话框会再次提示.我也在apache的access.log中找到了以下输出,
222.128.175.95 - kane [27/Oct/2012:17:39:54 +0800]"GET/jenkins/HTTP/1.1"401 794" - ""Mozilla/5.0(Macintosh; Intel Mac OS X 10_8_2)AppleWebKit/537.4 …
如果将nginx配置为反向代理,那么下面的配置(反直觉)是否会导致性能下降?
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
Run Code Online (Sandbox Code Playgroud)
这将检查文件是否存在,然后提供它并完成请求.但是,这可能会导致一些I/O发生.如果该文件系统很慢,那么将请求转发到代理服务是否可能更快?
案件:
这是在http://internal.abc.com:123上反向代理(Apache 2.2)到内部服务器服务器
根据mod_proxy重定向保留原始请求URL,添加:
ProxyPreserveHost On
Run Code Online (Sandbox Code Playgroud)
对于httpd.conf,internal.abc.com目前将原始请求URL识别为:
有什么方法可以恢复https://api.abc.com的原始网址吗?也就是说,还保留原始协议(http)和端口(80,或空也很好)
技术信息
Azure WebsiteIIS Manager Site Extension by shibayan情境
我已经在上实现了反向代理Azure Website,但是接收服务器没有收到任何有关初始请求是否结束的指示HTTPS。
我想做的是通过custom将初始请求的HTTPS标志ON/OFF发送到代理服务器HTTP Header。
理论上
shibayan的IIS Manager Site Extension,我可以编辑applicationHost.xdt文件,给它一个变换插入一个<allowedServerVariables>标签,并应让我设置自定义HTTP Header。实践中
我已经将重写规则配置为:
<rule name="Proxy" stopProcessing="true" xdt:Transform="Replace" xdt:Locator="Match(name)">
...
<serverVariables>
<set name="HTTP_X_USE_HTTPS" value="{HTTPS}" />
</serverVariables>
...
</rule>
Run Code Online (Sandbox Code Playgroud)
并尝试了将<serverVariables>标签放置在哪里的几种组合...
尝试一个:
如答案中所述。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<proxy enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" xdt:Transform="Insert" />
<rewrite>
<allowedServerVariables>
<add name="HTTP_X_USE_HTTPS" …Run Code Online (Sandbox Code Playgroud) 我将我的keycloak服务器放置在apache代理后面:
ProxyRequests On
ProxyVia On
ProxyPreserveHost On
SSLProxyEngine On
SSLProxyCheckPeerCN on
SSLProxyCheckPeerExpire on
<LocationMatch "/auth/">
ProxyPass http://keycloak:8090/auth/ Keepalive=On
</LocationMatch>
ProxyPassReverse "/auth/" "http://keycloak:8090/auth/"
Run Code Online (Sandbox Code Playgroud)
我已经成功地告诉我在JavaScript端的密钥斗篷使用/ auth进行身份验证:
{
"realm" : "local",
"auth-server-url" : "/auth",
"ssl-required" : "external",
"resource" : "client-local",
"public-client" : true
}
Run Code Online (Sandbox Code Playgroud)
我已经成功登录,但是在发出服务器请求后,过滤器(org.keycloak.jaxrs.JaxrsBearerTokenFilterImplfrom keycloak-jaxrs-oath-client-4.0.0.FINAL)引发异常:
WWW-Authenticate:Bearer realm =“ local”,error =“ invalid_token”,error_description =“无效的令牌发行者。预期为' http:// keycloak:8090 / auth / realms / local ',但为' http:// localhost / auth / realms / local '“
我在这里想念的是什么?我期望反向代理对于密钥斗篷是透明的...我也无法在密钥斗篷管理面板中找到将本地主机添加到有效发行人的选项...
如何使该设置生效?