Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev ][Date Next ][Thread Prev ][Thread Next ][Date Index ][Thread Index ]
Re: Redirect с переменной $host в условии
On Fri, 26 Aug 2005, Alexander Yusupov wrote:
Забыл сказать что с $http_host тоже пробовал, т.е.:
if ($http_host ~ !^www\. ){
rewrite ^(.*)$ http://www.$http_host$1 ;
} не работает. Приведу свой конфиг может, что в нем не так.
Я ошибся: nginx пока не поддерживает отрицание регулярного выражения,
но можно указать отрицание в самом регулярном выражении:
if ($http_host ~ "^(?!www\.)" ){
Плюс к этому игнорируется директива:
location ~* ^.+\.(swf|GIF|gif|JPG|JPEG|jpg|jpeg|PNG|png|ICO|ico|js|css)$ {
access_log off;
expires 30d;
}
Не нужно указывать "GIF|gif", поскольку для "~*" достаточно одного
варианта - "gif".
Что значит - игнорируется ? Под каким location обрабатываются запросы,
котороые должны обрабатываться в этом ?
nginx.conf
----------------------
user www;
worker_processes 15;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
connections 1024;
use kqueue;
}
http {
include mime.types;
default_type text/plain;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 75 20;
gzip on;
gzip_min_length 1100;
gzip_types text/plain;
log_format vhost '%{Host}i %addr - - [%time] "%request" %status %length
"%{Referer}i" "%{User-Agent}i"';
server {
listen 80;
server_name somename.com;
root /www/catalog/www;
location ~*
^.+\.(swf|GIF|gif|JPG|JPEG|jpg|jpeg|PNG|png|ICO|ico|js|css)$ {
root /www/catalog/www;
access_log off;
expires 30d;
}
access_log /var/log/nginx/access.log vhost;
location / {
root /www/catalog/www;
index index.php;
}
error_page 404 /;
# deny access to .htaccess files
location ~ /\.ht {
deny all;
}
# location /status { stub_status on; }
location ~* ^.+\.php$ {
root /www/catalog/www;
fastcgi_pass 127.0.0.1:1088;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
/www/catalog/www$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
# жрет ресурсы, без нужды не использоват
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param REDIRECT_STATUS 200;
fastcgi_param DOCUMENT_ROOT /www/catalog/www;
fastcgi_param SCRIPT_FILENAME
/www/catalog/www$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED
/www/catalog/www$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param REDIRECT_STATUS 200;
#additional system call is made, without need it is
better to not use
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param SERVER_SOFTWARE "nginx";
fastcgi_param GATEWAY_INTERFACE "CGI/1.1";
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
}
if ($http_host ~ !^www\. ){
rewrite ^(.*)$ http://www.$http_host$1 ;
}
}
}
Игорь Сысоев
http://sysoev.ru