Tenho a seguinte configuração de servidor:
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;
}
}
Eu tenho o seguinte link para o recurso:
http://localhost:7777/standardlib/resources/css/standardlib.css
Mas o arquivo está realmente dentro:
/standardlib/src/main/webapp/resources/css/standardlib.css
Então, estou tentando reescrever o URL:
rewrite ^/standardlib/(.*)$ /standardlib/src/main/webapp/$1 last;
Mas por algum motivo não funciona. Eu adicionei log:
error_log logs/error.log notice;
rewrite_log on;
Mas não há informações no log de erros sobre reescrita.
Eu verifiquei o regex com regex101 e parece estar capturando o grupo correto.
O que estou fazendo errado?
ATUALIZAR
Na verdade, está funcionando, adicionei log_not_found on;
, mas por algum motivo ele tenta encontrar o seguinte arquivo:
`D:\webservers\nginx/html\standardlib\src\main\webapp\bootstrap.js`
ao invés de
`D:\projects\gibr\standardlib\src\main\webapp\bootstrap.js`
Aqui está o que eu tenho no log:
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)
É porque você está misturando um caminho de raiz do Windows com barras invertidas, com barras de estilo Unix.
Veja os comentários aqui: Como faço para especificar caminhos de arquivo do Windows no nginx
Não sou administrador de sistema do Windows, mas parece que você precisa usar caminhos relativos como ../ para obter seu caminho completo e funcionando.
Veja também: https://www.ruby-forum.com/topic/172663