LINUX.ORG.RU

переход с апача на nginx+php-fpm

 , , ,


1

2

не получается перенести все правила с htaccess в nginx

RewriteRule ^adv/?$ /adv/index.php [L]
RewriteRule ^contacts/?$ /contacts/index.php [L]
RewriteRule ^about/?$ /about/index.php [L]

RewriteRule ^politics/?$ /archive.php?cat=politics [L]
RewriteRule ^economy/?$ /archive.php?cat=economy [L]
RewriteRule ^society/?$ /archive.php?cat=society [L]
RewriteRule ^world/?$ /archive.php?cat=world [L]
RewriteRule ^culture/?$ /archive.php?cat=culture [L]
RewriteRule ^incident/?$ /archive.php?cat=incident [L]
RewriteRule ^sport/?$ /archive.php?cat=sport [L]
RewriteRule ^technology/?$ /archive.php?cat=technology [L]
RewriteRule ^interesting/?$ /archive.php?cat=interesting [L]

пробую такой вариант

rewrite ^/world/?$ /archive.php?cat=world break;                                                                 

ссылка example.com/world/ начинает открываться, но ссылки на странице world отдаются 404 подскажите как сделать правильно?


пробую еще вот так

location /world/ {
rewrite ^/world/?$ /archive.php?cat=world break;
try_files $uri $uri/ /archive.php?cat=world?$query_string;
fastcgi_pass   unix:/var/run/php-fpm.sock;
fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
include        fastcgi_params;
}

http://example.com/world/ работает, http://example.com/world/1.html все равно 404

Garcia
() автор топика
Последнее исправление: Garcia (всего исправлений: 1)

Если это связано с предыдущей темой, то php-fpm можно настроить и на апаче.

rewrite ^/world /archive.php?cat=world break;       

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 2)
Ответ на: комментарий от goingUp

это не связанные темы, мне надо перенести правила htaccess

...
RewriteRule ^world/?$ /archive.php?cat=world [L]
...
на nginx

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

вроде бы сделал, но осталась проблема с tag

location ~* ^/tag/(.*)$ {
                set $id $1;
                rewrite ^ /tag.php?tag=$id break;

                fastcgi_pass   unix:/var/run/php-fpm.sock;
                fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

http://example.com/tag/Кремль так работает http://example.com/tag/Иван ургант так нет

все из-за «+» «пробела» как это можно поправить?

Garcia
() автор топика
Последнее исправление: Garcia (всего исправлений: 1)

сделал так

rewrite ^/politics/?$ /archive.php?cat=politics break;
rewrite ^/economy/?$ /archive.php?cat=economy break;
rewrite ^/society/?$ /archive.php?cat=society break;
rewrite ^/world/?$ /archive.php?cat=world break;
rewrite ^/culture/?$ /archive.php?cat=culture break;
rewrite ^/incident/?$ /archive.php?cat=incident break;
rewrite ^/sport/?$ /archive.php?cat=sport break;
rewrite ^/technology/?$ /archive.php?cat=technology break;
rewrite ^/interesting/?$ /archive.php?cat=interesting break;
location ~* ^/(.*?)/([0-9]+)-(.*?)\.html$ {
                set $id $2;
                rewrite ^ /get.php?id=$id break;

                fastcgi_pass   unix:/var/run/php-fpm.sock;
                fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }

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

еще вопрос, есть конфиг

server {
        listen 80;
        server_name example.com;
        root /var/www/example.com;
        index index.php index.html index.htm;
        access_log /var/log/nginx/example.com.access.log combined;
        error_log /var/log/nginx/example.com.error.log error;

        rewrite ^([^.]*[^/])$ $1/ permanent;

        location / {
                rewrite ^(.*)$ /public/$1 break;
                try_files $uri $uri/ /public/index.php?$query_string;
        }

        location ~ .php$ {
                include /etc/nginx/fastcgi_params;
                fastcgi_pass  unix:/var/run/php-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                fastcgi_connect_timeout 60;
                fastcgi_send_timeout 180;
                fastcgi_read_timeout 180;
                fastcgi_buffer_size 128k;
                fastcgi_buffers 4 256k;
                fastcgi_busy_buffers_size 256k;
                fastcgi_temp_file_write_size 256k;
        }

        location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
                root /var/www/example.com/public;
                access_log        off;
                expires           max;
        }

}

все вроде как работает, но на одной странице, в логах вижу

[error] 15817#15817: *13259 open() "/var/www/example.com/public/public/upload/images/news/11/4/screenshot-2.png" failed (2: No such file or directory), client: ip_client, server: example.com, request: "GET /public/upload/images/news/11/4/screenshot-2.png HTTP/1.1", host: "example.com", referrer: "https://example.com/articles/"
[error] 15817#15817: *13258 open() "/var/www/example.com/public/public/upload/images/news/12/7/2.jpg" failed (2: No such file or directory), client: ip_client, server: example.com, request: "GET /public/upload/images/news/12/7/2.jpg HTTP/1.1", host: "example.com", referrer: "https://example.com/articles/"

два раза public добавил, файлы лежат в

/var/www/example.com/public/upload/images/news/

как или что поправить, что бы нормально файлы он находил?

Garcia
() автор топика
Последнее исправление: Garcia (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.