在nginx中,我能够将用户“代理”传递到另一台服务器。例如(为简洁起见,省略了一些详细信息):
server {
listen 443 ssl;
server_name 192.xxx.xx.xx;
root /var/www/...;
location /api {
proxy_pass https://localhost:8443;
}
location / {
try_files $uri $uri/ /index.html;
}
}
但是,如果尝试通过IIS管理器(URL重写->反向代理)添加类似的规则,则会收到错误消息“指定的主机名不正确”,因为在我的情况下它包含“ /” 。
在引用this SO question之后,我认为也许可以使用简单的“空白” URL重写规则来实现:
<rule name="Reverse Proxy" stopProcessing="true">
<match url="^test-rewrite" />
<action type="Rewrite" url="http://localhost:8081" appendQueryString="false" />
</rule>
但是,现在,它只是简单地重定向回“默认网站”。具体来说,在端口8081上运行的服务器(Tomcat服务器)包含逻辑,如果用户未经身份验证,该逻辑会将用户重定向到/ login路径。而不是将用户重定向到Java应用程序上的/ login,而是将其重定向回到“默认网站”上的/ login。
很抱歉这是一个愚蠢的问题,但是我对IIS不太了解,并且在nginx中该任务非常简单。
谢谢。
编辑:
为澄清起见,IIS托管的网站和Tomcat服务器都在同一台物理计算机上运行(这就是为什么我引用本地主机的原因)。