LINUX.ORG.RU

перевод htaccess под nginx


0

0

Доброе время суток! Задача такая: Был вэб-сервер с Apache2 и .htaccess. Теперь для разгрузки сервера принято решение соорудить связку nginx (front)+apache2. Если ли готовые инстукции по переводу правил или - наверно совсем оптимист! - может Вы поможете перевести? До этого мои программисты сами писали себе правила и я, как системщик в них особо не вникал. А тут понадобилось...

Типичный .htaccess выглядит так:

Order allow,deny Allow from all

Options +FollowSymlinks

RewriteEngine on RewriteBase /

RewriteRule ^.htaccess$ - [F]

RewriteRule ^images/(.*)$ kernel/images/$1 [L] RewriteRule ^scripts/(.*)$ kernel/scripts/$1 [L]

RewriteRule ^(\w{2,3}/)?products/models/(.*) index.php?link=$1/products/models/&p=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !^/i/.*$ RewriteCond %{REQUEST_URI} !^kernel/external/.*$ RewriteRule ^(.*)$ index.php?link=$1&%{QUERY_STRING} [L]

ErrorDocument 404 /404/

Re: перевод htaccess под nginx

если nginx фронтэнд, то зачем это правило переписывать для него ?

phasma ★☆ ()
Ответ на: Re: перевод htaccess под nginx от phasma

Re: перевод htaccess под nginx

Дело в том, что с htaccess сайт не отображается. Точнее, если не закомментить все строки кроме первых двух, то возвращается 500 ошибка. Конечно, может конфиг криво написал. могу для одного из вхостов привести, если требуется

vasya_p ()

Re: перевод htaccess под nginx

нечто вроде такого, если ничего не пропустил:

…
location = /.htaccess { return 403; }
location / {
    root /srv/nginx/html/kernel;
    if (!-e $request_filename) {
        rewrite "^/(\w{2,3}/)?products/models/(.*)$" /index.php?link=$1/products/models/&p=$2 break;
        rewrite ^(.*)$ /index.php?link=$1 break;
    }
}
location /kernel/external/ { root /srv/nginx/html; }
location /i/ { root /srv/nginx/html; }
location ~ /(images|scripts)/ { root /srv/nginx/html/kernel; }
location ~ \.php$ { … }
…

root-ы поправите на правильные.

arsi ★★★★★ ()
Ответ на: Re: перевод htaccess под nginx от vasya_p

Re: перевод htaccess под nginx

> приведите, пожалуйста.

В принципе если nginx только как фронт, то на нем и не надо настраивать никаких вирт-хостов - просто в дефолт-сервер прописать что-то вроде

server {

listen x.x.x.x:80 default;

access_log /var/log/nginx/localhost.access.log;

location / {

proxy_pass http://127.0.0.1:8080;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $remote_addr;

proxy_connect_timeout 120;

proxy_send_timeout 120;

proxy_read_timeout 180;

}

}

OldFornit ()
Ответ на: Re: перевод htaccess под nginx от OldFornit

Re: перевод htaccess под nginx

server {
listen 80;
server_name wiki;
access_log /var/log/nginx.access_log;
location ~* \.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf| swf|ico|flv|txt|xml|docx|xlsx)$ {
root /var/www/wiki/;
index index.html index.php;
access_log off;
expires 30d;
}
location ~ /\.ht {
deny all;
}
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $remote_addr;
proxy_set_header Host $host;
proxy_connect_timeout 60;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_redirect off;
proxy_set_header Connection close;
proxy_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
}
}

vasya_p ()
Ответ на: Re: перевод htaccess под nginx от vasya_p

Re: перевод htaccess под nginx

апач при этом для каждого вхоста выглядит так:

#--------------------------------------------------------------- wiki
<VirtualHost *:80>
ServerAdmin q
DocumentRoot /var/www/vhosts/wiki/www
ServerName wiki
<Directory /var/www/vhosts/wiki/www>
AllowOverride all
</Directory>
ErrorLog /var/www/vhosts/wiki/logs/error_log
CustomLog /var/www/vhosts/wiki/logs/access_log combined
</VirtualHost>

<VirtualHost *:443>
SSLEngine on
SSLCertificateKeyFile /etc/apache2/ssl/server.key
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP

ServerAdmin q
DocumentRoot /var/www/vhosts/wiki/www
ServerName wiki:443
<Directory /var/www/vhosts/wiki/www>
AllowOverride all
</Directory>

ErrorLog /var/www/vhosts/wiki/logs/ssl_error_log
CustomLog /var/www/vhosts/wiki/logs/ssl_access_log combined
</VirtualHost>

vasya_p ()
Ответ на: Re: перевод htaccess под nginx от vasya_p

Re: перевод htaccess под nginx

ну еще бы ошибок не было...

Попробуй апач повесить на 8080 (и директивой listen и в указаниях виртхостов). А для nginx взять тот конфиг, который я выложил ранее немного.

OldFornit ()
Ответ на: Re: перевод htaccess под nginx от vasya_p

Re: перевод htaccess под nginx

он и не будет, у вас либо там действительно переноса строки нет после RewriteEngine on
либо у вас mod_rewrite не включен
и неужели ж так сложно почитать эррорлог?

iSage ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.