Задать вопрос

Как в NGINX добавить правило для страницы index.php в корне сайта и не воздействовать этим правилом на другие index.php в других дирректориях?

Здравствуйте, нужно решить проблему, весь сайт кроме некоторых динамических страниц обрабатывается nginx.
Есть модуль который запрашивается через index.php с get параметрами.

При попытке добавить правило обхода кеширования, каким то образом переписалось правило которое отвечает за запрет кеширования данных в админке.

location = /index.php {
  if ($args ~ tmpl=module){
     proxy_pass http://localhost:81;
  }
}


Как сделать так что бы правило работало только для Index.php в корне сайта?

Или можно как то применить правило только если обращаются к "index.php?tmpl=module"
После index.php?tmpl=module могут добавиться еще параметры

Весь конфиг
server {

   listen 80;
   server_name www.адрес_сайта.ру;

   return 301 http://адрес_сайта.ру$request_uri;
}

server {

   listen 666;
   server_name адрес_сайта.ру;

   location / {
     proxy_pass http://localhost:81;
   }
}

server {
	
   listen 80;
   server_name адрес_сайта.ру;

   access_log /var/log/nginx/proved-ru-access.log;
   error_log /var/log/nginx/proved-ru-error.log warn;
   

  location / {
    
     proxy_cache one;
     proxy_pass http://localhost:81;

     # Прячем куки других пользователей
     proxy_hide_header "Set-Cookie";
     # Игнорируем строки не кэшировать
     proxy_ignore_headers "Set-Cookie" "Cache-Control" "Expires";


   }

   #location = /index.php {
   #  if ($args ~ tmpl=module){
   #     proxy_pass http://localhost:81;
   #  }
   #}

   location /administrator/ {

    # http://kbeezie.com/apache-with-nginx

    # these two lines tell Apache the actual IP of the client being forwarded
    # Apache requires mod_proxy (http://bit.ly/mod_proxy) for these to work
    # Most Apache 2.0+ servers have mod_proxy configured already
 
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
 
    # this next line adds the Host header so that apache knows which vHost to serve
    # the $host variable is automatically set to the hostname Nginx is responding to
 
    proxy_set_header Host $host; 

    # And now we pass back to apache
    # if you're using a side-by-side configuration the IP can be changed to
    # apache's bound IP at port 80 such as http://192.170.2.1:80

    proxy_pass http://localhost:81;

   }

   location /feeds/ {
     proxy_pass http://localhost:81;
   }

  location ~* /blogs {
     proxy_pass http://localhost:81;
  }

  location /component/jcomments/ {
      proxy_pass http://localhost:81;
  }
  
  location /components/com_blogs/assets/php/captcha/{
	 proxy_pass http://localhost:81;
  }
  
  location /form.php{
    proxy_pass http://localhost:81;
  }
  
  location /test.php{
    proxy_pass http://localhost:81;
  }

  location /components/com_jcomments/helpers/notification.php{
    proxy_pass http://localhost:81;
  }
  
  location /search.html{
    proxy_pass http://localhost:81;
  }
  
   location ~*  \.(jpg|jpeg|png|gif|ico|pdf|swf|css|doc|docx|ppt|pptx|xls|xlsx)$ {
       expires 1y;
       root  /var/www/www-en;
  }
}
  • Вопрос задан
  • 701 просмотр
Подписаться 4 Оценить 11 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы