我试图代理webmin背后的nginx由于各种原因,这是超出了这个问题的范围。 不过,我一直在尝试一段时间,似乎无法弄清楚,并认为我已经耗尽了我能想到的所有configuration文件的排列。
我现在有什么:相关的nginxconfiguration(注释掉选项,我试了很多)
# Proxy for webmin location /admin/quackwall-webmin { proxy_pass http://127.0.0.1:10000; # Also tried ending with /admin/quackwall-webmin proxy_set_header Host $host; }
/etc/webmin/config – 相关部分
webprefix=/admin/quackwall-webmin webprefixnoredir=1 referer=(nginx domain name)
Webmin本身位于标准端口上,暂时侦听所有地址以进行debugging。 目前SSL已被禁用。
所以我做了一个标准的login页面请求。 但是,所有的CSS和图像都被打破了,所有的资源都返回了标准的login页面。 在我看到的webmin miniserv日志
127.0.0.1 - - [29/Oct/2012:12:29:00 -0400] "GET /admin/quackwall-webmin/session_login.cgi HTTP/1.0" 401 2453 127.0.0.1 - - [29/Oct/2012:12:29:01 -0400] "GET /admin/quackwall-webmin/unauthenticated/style.css HTTP/1.0" 401 2453 127.0.0.1 - - [29/Oct/2012:12:29:01 -0400] "GET /admin/quackwall-webmin/unauthenticated/sorttable.js HTTP/1.0" 401 2453 127.0.0.1 - - [29/Oct/2012:12:29:01 -0400] "GET /admin/quackwall-webmin/unauthenticated/toggleview.js HTTP/1.0" 401 2453
所以所有的URL都返回401s。 有趣的是,ngrep似乎表明这些请求在nginx和webmin之间的后端通信中已经完成
T 127.0.0.1:58908 -> 127.0.0.1:10000 [AP] POST /admin/quackwall-webmin/session_login.cgi HTTP/1.0..Host: (host)..Connection: close..User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW 64; rv:16.0) Gecko/20100101 Firefox/16.0..Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8..Accept-Language: en-US,en;q=0.5. .Accept-Encoding: gzip, deflate..Referer: http://(host)/admin/quackwall-webmin/session_login.cgi..Cookie: testing=1..Cache-Control: ma x-age=0..Content-Type: application/x-www-form-urlencoded..Content-Length: 41....page=%2F&user=(user)&pass=(pass) T 127.0.0.1:10000 -> 127.0.0.1:58908 [AP] HTTP/1.0 200 Document follows..
这些configuration选项和其他configuration的其他各种排列显示类似的结果,由nginx发送到webmin的URL是/admin/quackwall-webmin/session_login.cgi ,只是/session_login.cgi 。 所有给予201未经authentication的答复。 所有请求,即使那些有点成功(因为我实际上可以加载页面的资源)
webmin甚至支持webmin修改? 我究竟做错了什么? 我还有什么可以尝试?
哇,不知何故设法弄清楚了。 只是希望在付出赏金之前就明白了
本质上你必须要非常明确的configuration你的configuration,因为webmin总是想redirect你,而nginx有困难的时候试图重写和redirect它
为了帮助下一个人,请确保你已经告诉webmin它将在/etc/webmin/config中的另一个目录中
注意:斜杠在这个答案的其余部分非常重要。 然后去除导致原来的问题的痛苦和痛苦
webprefix=/admin/quackwall-webmin webprefixnoredir=1
接下来,你需要configurationnginx。 这是困难的部分,但我试图解释每个部分的作用
# Proxy for webmin # Last slash is important location /admin/quackwall-webmin/ { # Tell nginx that we want to proxy everything here to the local webmin server # Last slash is important proxy_pass http://127.0.0.1:10000/; # Change the response Location: header to come from our proxy directory, not the server # Fixes initial redirect after login proxy_redirect http://$host:10000/ /admin/quackwall-webmin/; # Also fixes initial redirect after login proxy_set_header Host $host; }
重新启动nginx和webmin,然后他们都应该工作。
注意,如果你的代理webmin通过nginx和webmin恰巧驻留在nginx所在的服务器上,你可以在/etc/webmin/miniserv.conf设置这些选项,
bind=127.0.0.1 sockets=
location /admin/quackwall-webmin/ { proxy_pass http://127.0.0.1:10000/; proxy_set_header Host $host; }