我有以下服务器配置:
server {
listen 7777;
server_name localhost;
rewrite ^/standardlib/(.*)$ /standardlib/src/main/webapp/$1 last;
location / {
root D:\Projects\gibr;
index index.html index.htm;
}
location /api {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://172.22.90.61:8008;
}
}
我有以下资源链接:
http://localhost:7777/standardlib/resources/css/standardlib.css
但文件实际上在里面:
/standardlib/src/main/webapp/resources/css/standardlib.css
因此我尝试重写 URL:
rewrite ^/standardlib/(.*)$ /standardlib/src/main/webapp/$1 last;
但出于某种原因,它不起作用。我添加了日志记录:
error_log logs/error.log notice;
rewrite_log on;
但是错误日志中没有有关重写的信息。
我已经检查过正则表达式regex101,并且似乎捕获了正确的组。
我究竟做错了什么?
更新
它实际上正在工作,我已经添加了log_not_found on;
,但由于某种原因,它尝试查找以下文件:
`D:\webservers\nginx/html\standardlib\src\main\webapp\bootstrap.js`
代替
`D:\projects\gibr\standardlib\src\main\webapp\bootstrap.js`
以下是我在日志中得到的内容:
15128#7720: *1 "^/standardlib/(.*)$" matches "/standardlib/bootstrap.js"
15128#7720: *1 rewritten data: "\standardlib\src\main\webapp\bootstrap.js"
15128#7720: *1 CreateFile() "D:\webservers\nginx/html\standardlib\src\main\webapp\bootstrap.js" failed (3: The system cannot find the path specified)
答案1
这是因为您将带有反斜杠的 Windows 根路径与 Unix 样式的正斜杠混合在一起。
请参阅此处的评论:如何在 nginx 中指定 Windows 文件路径
我不是 Windows 系统管理员,但似乎您需要使用相对路径(如 ../)才能使您的路径完整且正常工作。