Por que reescrever não funciona no nginx

1

Eu tenho a seguinte configuração do 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á dentro:

/standardlib/src/main/webapp/resources/css/standardlib.css

Estou tentando reescrever o URL:

rewrite ^/standardlib/(.*)$ /standardlib/src/main/webapp/$1 last;

Mas, por algum motivo, não funciona. Eu adicionei logging:

error_log  logs/error.log  notice;
rewrite_log     on;

Mas não há informações no registro de erros sobre a regravação.

Eu verifiquei o regex com regex101 e parece estar capturando o grupo correto.

O que estou fazendo de errado?

UPDATE

Na verdade, estou adicionando log_not_found on; , mas, por algum motivo, ele tenta encontrar o seguinte arquivo:

'D:\webservers\nginx/html\standardlib\src\main\webapp\bootstrap.js'

em vez 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)
    
por Max Koretskyi aka Wizard 08.04.2016 / 06:35

1 resposta

1

É porque você está misturando um caminho de raiz do Windows com barras invertidas, com slashes de estilo Unix.

Veja os comentários aqui: Como especifico caminhos de arquivos do Windows no nginx

Não sou sysadmin do Windows, mas parece que você precisa usar caminhos relativos como ../ para obter o caminho completo e funcionando.

Veja também: link

    
por 08.04.2016 / 09:54

Tags