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/

Ответ на: комментарий от phasma

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

vasya_p
() автор топика

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

…
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 ★★★★★
()
Ответ на: комментарий от vasya_p

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

В принципе если 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
()
Ответ на: комментарий от OldFornit

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
() автор топика
Ответ на: комментарий от vasya_p

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

#--------------------------------------------------------------- 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
() автор топика
Ответ на: комментарий от vasya_p

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

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

OldFornit
()
Ответ на: комментарий от OldFornit

а. ссори, там *конечно же* 8080, с другого сервера просто конфиг.

vasya_p
() автор топика
Ответ на: комментарий от vasya_p

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

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