我正在研究让IIS在J2EE服务器(JBoss)上执行的应用程序中进行身份验证.有没有办法让IIS作为反向代理工作,并传播代理应用程序(JBoss)用户的用户名和/或角色.如果可能的话,我还需要什么样的IIS版本?我有IIS的许可,所以我想在IIS中这样做,但除此之外我更喜欢开源.
谢谢!
托马斯
我正在尝试在作为代理的Apache2网络服务器后面设置一个Rails 3应用程序.Apache Web服务器在端口8080上运行,如果我调用http:// ip:8080,我在mongrel窗口中看到请求,因此代理正确地将接收请求中继到mongrel服务器.
但是,如果没有用户名,我的索引页将执行重定向到登录.所以我做了以下调用:http://:8080/app,但重定向转到http:/// session/new而不是http:/// app/sessio/new我不是很确定apache配置不当,我更担心rails 3.
下面是我的apache配置这个代理的东西,我的routes.rb文件和我发现的潜在的反向代理修复的一些代码,但它似乎不起作用.
REVERSE_PROXY_FIX
BASE_URL = ''
module ActionController
ActionController::Base.asset_host= BASE_URL
class UrlRewriter
# alias old_rewrite_url rewrite_url
# Prepends the BASE_URL to all of the URL requests created by the
# URL rewriter in Rails.
def rewrite_url(path, options)
url = old_rewrite_url(path, options)
url = url.gsub(@request.protocol + @request.host_with_port, '')
url = BASE_URL + url
url
end
end
end
Run Code Online (Sandbox Code Playgroud)
Apache2配置
# This file contains the proxy settings for apache to map all the incomming …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种可靠的方法来配置在/ app下的Apache反向代理后面运行的Mojolicious,这样url_for('/foo')实际上返回/app/foo而不仅仅是/foo(否则所有的链接都会被破坏).
该文档显示了/下所有内容的反向代理示例.但这不是我需要的,因为应用程序应该在/ app下.
谈及ProxyPass / http://localhost:8080/到ProxyPass /app http://localhost:8080/会造成问题,因为/app前缀会从应用程序生成的所有URL会丢失.
该文档还有一个关于重写的部分,其中有一个before_dispatch钩子的示例,它将获取请求URL的第一部分并将其用作基础.这需要ProxyPass /app http://localhost:8080/app/在Apache配置中将前缀附加到ProxyPass URL(带有斜杠),这在该页面上似乎没有提及,但可能不需要("移动第一部分并从路径到基础的斜杠)路径")因为它很明显.这使得调用成为可能(http://localhost/app/page转换为http://localhost:8080/app/page'app'被钩子删除),url_for('/foo')返回'/app/foo'(http://localhost/app/foo),所以链接将是正确的(在ProxyPass规则中没有尾随斜杠,这将使得/apppage/foo).
但是,在此示例中,URL修改始终在生产模式(if app->mode eq 'production')中进行.所以直接调用后端服务器(http://localhost:8080/testpage)将不再起作用,因为所有的URL都会被破坏.
所以我想,我会检查是否X-Forwarded-For设置了标头(通过mod_proxy_http),这将始终设置为反向代理请求.并且由于Apache mod_proxy文档提到可能已经在客户端请求中设置了此标头(并且最终包含多个值),我首先将其从请求中删除 - 因为发送此标头的客户端不应该导致该URL基础修改.
Apache VirtualHost配置:
# ProxyPreserveHost: Mojo::URL::to_abs() not 127.0.0.1
ProxyPreserveHost On
<Location "/app/">
# ProxyPass: prefix pass-thru
ProxyPass http://localhost:3000/app/ …Run Code Online (Sandbox Code Playgroud) 我正在nginx上设置反向代理.我有一个使用server_name的虚拟主机设置,phpmyadmin.lvh.me我想重定向localhost/phpmyadmin到phpmyadmin.lvh.me反向代理.
这是我的默认配置文件:
upstream phpmyadmin {
server phpmyadmin.lvh.me:80;
}
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /usr/share/nginx/html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name localhost;
location /phpmyadmin/ {
proxy_pass http://phpmyadmin;
}
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
} …Run Code Online (Sandbox Code Playgroud) 我有一个nginx重定向问题.我在nginx 1.4.4上工作,我有两个单独的重定向.它应该有两种工作方式:第一次重定向:地址address1.com重定向到地址address2.com - >地址address2.com重定向到应用程序所在的addres2.com:1234.
第二次重定向直接来自ddress2.com: - address2.com重定向到address2.com:1234
现在的问题是: - 从address1.com重定向到address2.com,但是address2.com到address2.com:port没有.它以502 Bad Gateway错误结束.配置和
日志中的错误如下所示:来自error.log的信息:
[error] : *386 connect() failed (111: Connection refused) while connecting to upstream, client: {client ip addr}, server:{server name}, request:
Run Code Online (Sandbox Code Playgroud)
"GET/HTTP/1.1",上游:" https://127.0.0.1 : {port}",主机:"{server name}"
Nginx使用存储在conf.d位置的许多.conf文件.
address1.conf(这是有效的):
server {
### server port and name ###
listen {ip_addr}:443;
ssl on;
server_name address1.com;
access_log /var/log/nginx/address1.log;
error_log /var/log/nginx/address1-error.log;
ssl_certificate /etc/httpd/ssl/servercert.crt;
ssl_certificate_key /etc/httpd/ssl/private/serverkey.key;
location / {
rewrite ^ $scheme://address2.com redirect;
}}
Run Code Online (Sandbox Code Playgroud)
address2.com conf文件(这不):
server {
### server port and name ###
listen …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的本地nginx服务器部署到公众.nginx服务器作为我的node express应用程序的反向代理运行,该应用程序也在端口3000上本地运行.因此我从/ etc/nginx/sites-available/express TO/etc/nginx/sites-enabled/express创建了一个符号链接,所以我的配置文件名为express,看起来像这样.
/ etc/nginx/sites-enabled/express
upstream express_servers{
server 127.0.0.1:3000;
}
server {
listen 80;
location / {
proxy_pass http://express_servers;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Run Code Online (Sandbox Code Playgroud)
我已从已启用站点的文件夹中删除了默认文件,但我没有更改我的nginx.conf文件,如下所示
/ etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout …Run Code Online (Sandbox Code Playgroud) 我使用nginx作为与ELB的reverse_proxy服务器.我正在寻找有关我在nginx.conf文件中设置的解析器值的解释.我的nginx.conf:
http {
...
resolver x.x.x.x valid=30s;
...
}
server {
...
set $elb "example.com";
location / {
...
rewrite ^/(.*) $1 break;
proxy_pass http://$elb/$1?$args;
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
我按照这个 - https://www.ruby-forum.com/topic/6816375#1166569并将/etc/resolv.conf值设置为解析器值,它工作正常.这背后的是什么?
我正在尝试从Apache Web服务器(A)配置反向代理到不同机器(B)上的另一个Apache Web服务器.
通过我目前正在使用的配置,我能够访问位于服务器B上的网页,就像它在服务器A上一样,但是对某些资产的请求经常导致ERR_CONTENT_DECODING_FAILED(至少在chrome中).当我使用简单的重定向而不是代理时,这不会发生.
我浏览了请求和响应标题,似乎文件传输的一切都很顺利:
请求:
GET /app1/assets/css/vendor.min.css?1470017050 HTTP/1.1
Host: some.host.address
...
Accept: text/css,*/*;q=0.1
Accept-Encoding: gzip, deflate, sdch
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
...
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Type: text/css;charset=utf-8
Connection: Keep-Alive
Transfer-Encoding: chunked
Run Code Online (Sandbox Code Playgroud)
我在服务器A上使用了以下配置:
ProxyPreserveHost on
ProxyPass "/app1/" "http://some.host.address:8080/app1/"
ProxyPassReverse "/app1/" "some.host.address:8080/app1/"
ProxyHTMLURLMap "http://some.host.address:8080" "/app1"
<Location /app1/>
ProxyPassReverse /app1/
ProxyHTMLEnable On
ProxyHTMLURLMap / /app1/
</Location>
Run Code Online (Sandbox Code Playgroud) 我在代理ASP.NET Core MVC应用程序时遇到问题.
我的应用程序在Kestrel上运行localhost:5000,我的Apache 2.4反向代理正在运行localhost:80.我要代理的所有请求localhost:80/test到localhost:5000
这是httpd.conf代理的部分:
...
<Location "/test">
ProxyPass "http://localhost:5000"
ProxyPassReverse "http://localhost:5000"
</Location>
...
Run Code Online (Sandbox Code Playgroud)
代理工作,但所有链接都被破坏.就像我有一个锚链接到一个以HomeController动作命名的控制器About,从代理返回的链接localhost/Home/About代替localhost/test/Home/About.主机是正确的,它test是缺少的上下文根.
处理这个问题的最佳做法是什么?ASP.NET Core中的配置是否指定了上下文根,以便TagHelpers将其考虑在内?或者它是Apache ProxyPass中重写链接的配置(真的不是这个的忠实粉丝)?
我已经配置了流星服务器并设置了nginx配置.但是,当路由配置动态子域以指向Web应用程序的特定部分时,它会在加载流星文件时在浏览器上产生404错误.
我试图将所有*.domain.com到http://localhost:3000/booking/
我的配置是:
server {
server_name *.domain.com;
listen 80;
location / {
proxy_pass http://localhost:3000/booking/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade; #for websockets
proxy_set_header Connection $connection_upgrade;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}
Run Code Online (Sandbox Code Playgroud)
404发生在Meteor JS文件中.
如果我删除上面的nginx子域配置并转到子域它完美地工作,加载路由应用程序.我假设我错过了正确加载应用程序的东西.
只有当我proxy_pass到URL中的路由时才会出现此问题<url>/booking
reverse-proxy ×10
nginx ×5
apache ×2
apache2 ×1
asp.net-core ×1
assets ×1
decoding ×1
express ×1
iis ×1
meteor ×1
mojolicious ×1
perl ×1
proxy ×1
redirect ×1
resolver ×1
ruby ×1
ubuntu-16.04 ×1
ufw ×1
virtualhost ×1
windows ×1