- 23, Oct 2024
- #1
В настоящее время я создаю веб-приложение. Чтобы это работало правильно, я написал следующее правило:
server { rewrite_log on; # IPv4 listen 80; listen 443 ssl; # IPv6 # listen [::]:80 ipv6only=on; # listen [::]:443 ssl ipv6only=on; server_name test.test; # SSL ssl_certificate /etc/ssl/private/ssl-bundle.test.test.crt; ssl_certificate_key /etc/ssl/private/test.test.key; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/test; index index.php index.html index.htm; try_files $uri $uri/ $uri/index.php $uri/index.html $uri/index.htm =404; disable_symlinks off; location / { if (!-e $request_filename) { expires 168h; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; rewrite ^(.*)$ /libraries/render.php; } } location = /config.inc.php { internal; } location /cache/ { internal; } location /libraries/ { internal; } location /images/ { internal; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: #fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; } location ~ /\.ht { deny all; } location ~ /\.sh { deny all; } location ~* \.html$ { expires -1; } location ~* \.(?:gif|jpe?g|png|ico)$ { expires 168h; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # Rewrites rewrite ^(?<filename>.+\.(?<type>css|js))$ /compress.php?file=$filename&type=$type; }
Он работает для URL-адресов с несуществующими файлами, например: .png
but not for a non-existent image: render.php
У меня есть второе правило, которое может влиять на изображения:
location ~* \.(?:gif|jpe?g|png|ico)$ {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
Но я не уверен, как это предотвратит срабатывание правила перезаписи. Это все расширения в этом правиле, которые не перенаправляются на http://test.test/test.png
Когда я удаляю это правило (закомментировав его), все расширения, кроме http://test.test/test
work. This is very strange.
Это вся моя конфигурация:
location / {
if (!-e $request_filename) {
expires 168h;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
rewrite ^(.*)$ /libraries/render.php;
}
}
#php #htaccess #images #переписывание URL #nginx