我有一个使用 nginx 反向代理流代理指向使用NTLM 身份验证,但我需要使用类似于 location 指令的东西来告诉这个反向代理将对该站点的请求发送到特定的 IRL。例如,如果用户要请求此站点:
我想转发给http://mysite.mydomain.com/xyz
通常我会使用 location 指令,但每当我将 location 指令添加到我当前的配置中时,都会出现错误"location" directive is not allowed here in /opt/nginx/nginx.conf:43
我的当前配置(由于我遇到的 NTLM 问题,其中包含很多我以前从未做过的东西)如下所示
/opt/nginx/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream backend {
hash $remote_addr consistent;
server mysite.mydomain.com:80 weight=5;
server 192.168.0.50:80 max_fails=3 fail_timeout=30s;
}
server {
listen 443 ssl;
ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass backend;
}
}
我不确定如何添加 /xyz URI。如果我将其添加到此文件中任何 IP 的末尾,则会出现错误,如果我尝试在服务器部分内添加位置指令,则会出现该错误。
当然,理想情况下,这实际上会转发到他们放在网址末尾的任何扩展名,并尝试,例如 /abc 或 /xyz,将转发到http://mysite.mydomain.com/abc, 和http://mysite.mydomain.com/xyz任何帮助都值得感激。
答案1
我之所以location
在流文档中找不到如何在流代理内进行设置,是因为这是不可能的。
该location
指令仅允许在节server{}
内的节中使用http{}
。
如果我更多地了解流连接的工作方式之间的区别,这可能会相当直观。
这个答案是由 Maxim Dounin 给出的,他给了我很多帮助,而且很棒。
对于任何想知道如何执行此操作的人来说,流部分与 http 部分完全分开,您可以将所需的一切放在 http 部分中。