我有一个在某个随机域上运行的服务(假设example.com
),我想从我的本地机器(又名localhost
)创建一个简单的外观。
location /some-app {
# This is for LDAP auth, not sure if important
auth_ldap_servers ldapserver;
proxy_pass http://example.com;
}
我确信它确实将我的请求重定向到该example.com
页面,但它没有从example.com
索引中获取链接的文件,例如 CSS 和 JavaScript 文件。我得到了如下内容:
172.17.0.1 - [email protected] [11/Aug/2016:10:20:35 +0000] "GET /components/navbar/navbar.controller.js HTTP/1.1" 404 570 "http://localhost:8080/some-app" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36"
我尝试过proxy_set_header Host $host;
,但似乎没有什么区别。我很确定我忽略了一些明显的东西,但我真的说不出来是什么。我看过rewrite
规则,但我想这可能比这更容易。
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
ldap_server ldapserver {
# boring ldap config
}
ldap_server ldapserver2 {
# boring ldap config
}
server {
listen 80;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
auth_ldap_servers ldapserver;
location / {
root html;
index index.html index.htm;
}
location /some-app {
auth_ldap_servers ldapserver2;
proxy_pass http://example.com:9000;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
答案1
编辑:根据评论更新。
下面的配置服务器仅index.html
来自 nginx,所有其他请求都传递给应用程序服务器。
代替:
location / {
root html;
index index.html index.htm;
}
location /some-app {
auth_ldap_servers ldapserver2;
proxy_pass http://example.com:9000;
}
你应该使用:
location / {
root html;
index index.html index.htm;
}
location ~ ^/(.+)$ {
auth_ldap_servers ldapserver2;
proxy_pass http://example.com:9000;
}