我有一个在http://192.168.0.2:8080/
运行的应用。 index.html页面位于/web
文件夹中,它在/css
处请求静态文件(例如css)。
我想使用nginx
作为反向代理并让myapp.mydomain.com
重定向到我的应用。
我在nginx.conf
中有以下配置:
server {
listen 80;
server_name myapp.mydomain.com;
satisfy any;
location / {
proxy_pass http://192.168.0.2:8080/web/;
index index.html index.htm;
}
}
但它不适用于css
个文件,因为它在/web/css
查找它们。
我的解决方法是让nginx.conf
以这种方式配置(不使用/web
):
server {
listen 80;
server_name myapp.mydomain.com;
satisfy any;
location / {
proxy_pass http://192.168.0.2:8080/;
index index.html index.htm;
}
}
每次并请求http://myapp.mydomain.com/web
。
但我希望能够请求http://myapp.mydomain.com/
并让nginx
管理。
我认为类似的东西可能会有所帮助,但我无法找到:
location ~ .(css|img|js)/(.+)$ {
try_files $uri /$uri /$1/$2;
}
location / {
proxy_pass http://192.168.0.2:8080/web/;
index index.html index.htm;
}
这是我的完整文件,包含auth等:
upstream app { server 192.168.0.2:8080; }
server {
listen 80;
server_name myapp.mydomain.com myapp.myOtherDomain.com;
satisfy any;
allow 192.168.0.0/24;
deny all;
auth_basic "closed site";
auth_basic_user_file /etc/nginx/auth/passwords;
location / { proxy_pass http://app/web/; }
location /css { proxy_pass http://app; }
location /img { proxy_pass http://app; }
location /js { proxy_pass http://app; }
}
知道如何解决这个问题吗?
感谢。
答案 0 :(得分:0)
根据我的理解,您有一个有效的配置,仅问题是您希望将网址http://myapp.mydomain.com/
映射到http://192.168.0.2:8080/web/
。
您的工作配置是:
server {
listen 80;
server_name myapp.mydomain.com;
satisfy any;
location / {
proxy_pass http://192.168.0.2:8080/;
index index.html index.htm;
}
}
最简单的解决方案是为/
URI添加完全匹配。如:
server {
listen 80;
server_name myapp.mydomain.com;
satisfy any;
location = / { rewrite ^ /web/; }
location / {
proxy_pass http://192.168.0.2:8080/;
index index.html index.htm;
}
}