цикл перенаправления nginx 301

#nginx #php

#nginx #php

Вопрос:

У меня возникла проблема с настройкой nginx и php-fpm. SEO-дружественные URL-адреса не работают, и когда я пытаюсь использовать прямой маршрут, я получаю цикл перенаправления 301 в браузере.

Вот конфигурация nginx

 # redirect non-www to www
server {
  listen 8081;
  server_name MYSITEURL.com;
  rewrite ^(.*) http://www.MYSITEURL.com$1 permanent;
}

server {
  listen      8081;
  server_name www.MYSITEURL.com;

  rewrite_log on;

  access_log /var/www/vhosts/MYSITEURL.com/statistics/logs/access_log.nginx combined;
  error_log /var/www/vhosts/MYSITEURL.com/statistics/logs/error_log.nginx warn;

  root /var/www/vhosts/MYSITEURL.com/httpdocs;
  index index.php index.html index.htm default.html default.htm;

    if (!-e $request_filename) {
      rewrite ^(. )$ /navigation.php?q=$1 last;
    }


    location / {

      try_files $uri $uri/ /navigation.php?q=$uriamp;$args;
    }

    # deny running scripts inside writable directories
    location ~* /(images|cache|media|logs|tmp)/.*.(php|pl|py|jsp|asp|sh|cgi)$ {
      return 403;
      error_page 403 /403_error.html;
    }

    location ~ .php$ {
      try_files $uri =404;
      fastcgi_pass  unix:/var/run/php-fpm/www9.sock;
      fastcgi_index index.php;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      include /etc/nginx/fastcgi.conf;
    }

    location ~ /. {
      access_log off;
      log_not_found off; 
      deny all;
    }

    location ~* .(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|ico|swf)$ {
      expires max;
      add_header Pragma public;
      add_header Cache-Control "public, must-revalidate, proxy-revalidate";
      access_log off;
      log_not_found off;
    }

  }

  server {
    listen      8081;
    server_name webmail.MYSITEURL.com;
    error_log       /var/log/httpd/webmail.MYSITEURL.com.log warn;

    location / {
      proxy_pass         http://webmail.MYSITEURL.com:8080$request_uri;
      include  /etc/nginx/proxy.conf;
    }

    location ~* ^. .(jpg|jpeg|gif|css|png|js|ico|txt|srt|swf|zip|rar|html|htm|pdf)$ {
      root  /usr/share/psa-horde ; 
      expires           7d; 
    }
   }

  server {
    listen      8081;
    server_name sitebuilder.MYSITEURL.com;
    error_log       /var/log/httpd/sitebuilder.MYSITEURL.com.log warn;

    location / {
      proxy_pass         http://MYIP:8080$request_uri;
      include  /etc/nginx/proxy.conf;
    }
   }

  server {
    listen      8081;
    server_name lists.MYSITEURL.com;
    error_log       /var/log/httpd/lists.MYSITEURL.com.log warn;

    location / {
      proxy_pass         http://MYIP:8080$request_uri;
      include  /etc/nginx/proxy.conf;
    }
   }
 

Это файл htaccess, который поставляется вместе со скриптом, который я запускаю:

 Options  FollowSymLinks
RewriteEngine On

AddEncoding gzip .gz
AddEncoding gzip .gzip
<FilesMatch ".(js.gz|js.gzip)$">
  ForceType text/javascript
</FilesMatch>
<FilesMatch ".(css.gz|css.gzip)$">
  ForceType text/css
</FilesMatch>


RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} !/ow_updates/index.php
RewriteCond %{REQUEST_URI} !/ow_updates/
RewriteCond %{REQUEST_URI} !/ow_cron/run.php
RewriteCond %{REQUEST_URI} (/|.php|.html|.htm|.xml|.feed|robots.txt|.raw|/[^.]*)$  [NC]
RewriteRule (.*) index.php
 

apache vhost, пытается удалить перенаправление для номера порта в url. MYURL.com ссылка на MYURL.com:8081

     <VirtualHost MY.IP.ADDRESS:8080>
            ServerName   MYURL.com:8080
            ServerAlias  www.MYURL.com
            UseCanonicalName Off
            ServerAdmin  "myadmin@email.com"
            DocumentRoot /var/www/vhosts/MYURL.com/httpdocs
            CustomLog  /var/www/vhosts/MYURL.com/statistics/logs/access_log plesklog
            ErrorLog  /var/www/vhosts/MYURL.com/statistics/logs/error_log
    <IfModule mod_userdir.c>
            UserDir /var/www/vhosts/MYURL.com/web_users
    </IfModule>
            <IfModule mod_ssl.c>
                    SSLEngine off
            </IfModule>
            <Directory /var/www/vhosts/MYURL.com/httpdocs>
            <IfModule sapi_apache2.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode on
                    php_admin_value open_basedir "/var/www/vhosts/MYURL.com/httpdocs:/tmp"
            </IfModule>
            <IfModule mod_php5.c>
                    php_admin_flag engine on
                    php_admin_flag safe_mode on
                    php_admin_value open_basedir "/var/www/vhosts/MYURL.com/httpdocs:/tmp"
            </IfModule>
                    Options -Includes -ExecCGI
            </Directory>
            <Directory /var/www/vhosts/MYURL.com/web_users>
            <IfModule sapi_apache2.c>
                    php_admin_flag engine off
            </IfModule>
            <IfModule mod_php5.c>
                    php_admin_flag engine off
            </IfModule>
            </Directory>
    </VirtualHost>
 

Комментарии:

1. Можете ли вы удалить часть « if (!-e $ request_filename) { rewrite ^(. ) $ /navigation.php?q = $ 1 last; }` и посмотреть, что произойдет? Не забудьте перезапустить nginx, кстати

2. да, это сработало! Спасибо. Другая проблема, с которой я сталкиваюсь, заключается в том, что номер порта указан в URL. mysite.com перенаправляет на mysite.com:8081. Видите ли вы что-нибудь в nginx, что это сделает? Для этого также есть экземпляр apache, и он может быть там

3. Не то, что я вижу. Это ваш единственный виртуальный хост? Можете ли вы выполнить netstat -putan в командной строке, чтобы увидеть, какие порты используются nginx?

4. tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 21690/nginx.conf В именованном процессе также около десяти строк. Существует виртуальный хост apache, который прослушивает 8080 и псевдоним URL-адреса. Я опубликую это в следующем комментарии