Apache, mod_authz_host, неэффективный пункт «Разрешить от»

Я пытаюсь ограничить доступ к части моего веб-сайта только для определенного компьютера в локальной сети, используя mod_authz_host . https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html

Моя конфигурация выглядит так:

<LocationMatch "/export.*">
  Order allow,deny
  Allow from 192.168.1.207
</LocationMatch>

где 192.168.1.207 - это IP-адрес машине, которой я хочу разрешить доступ.

Проблема в том, что доступ с машины все еще запрещен.

В журнале доступ выглядит следующим образом:

fvs318gv2 - - [27/Mar/2018:15:42:28 +0200] "GET /export/ HTTP/1.1" 403 209

РЕДАКТИРОВАТЬ: Соответствующий используемый формат журнала: "% h% l% u% t \"% r \ "%> s% b"

, что заставляет меня задуматься, что означает fvs318gv2 , это даже не похоже на IP-адрес? Очевидно, Apache не видит, что машина исходит со своего IP-адреса, в чем может быть проблема?

Если я сделаю ipconfig / all на этой машине, я получу: } location @rewrites {rewrite ^ / blog / $ ...

Я хочу создать путь с подстановочными знаками, который начинается с папки / blog , я использую следующий код

location ~* ^/blog/(.*)$ {
    try_files $uri $uri/ $uri.php @rewrites;
}

location @rewrites {
    rewrite ^/blog/$ /rewrite/bloguri.php last;
}

Работа по следующим ссылкам, которая показывает содержимое из /rewrite/bloguri.php

http://www.example.com/blog/randomlink.html
http://www.example.com/blog/randomlink

, но следующие структуры не работают, что мне нужно для работы

http://www.example.com/blog/randomlink/
http://www.example.com/blog/randomlink.php

Изменить:

bloguri.php содержит следующее содержимое

<?php
echo "blog";
?>

Ниже приведен снимок экрана журналов
logs

Ниже приведен мой полный файл nginx.conf

 location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ {
     alias /var/www/vhosts/example.com/web_users/$1/$2;
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
     include /etc/nginx/fastcgi.conf;
 }

 location ~ \.php(/.*)?$ {
     fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
     fastcgi_param PATH_INFO $fastcgi_path_info;
     fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
     include /etc/nginx/fastcgi.conf;
 }

 location ~ /$ {
     index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
 }

 location /blog {
     try_files $uri $uri/ /rewrite/blog.php;
 }
0
задан 12 April 2018 в 15:01
1 ответ

Попробуйте следующее:

location /blog {
    index /rewrite/bloguri.php;
    try_files $uri $uri/ /rewrite/bloguri.php;
}

В вашем вопросе явно не указано, что вы хотите перенаправить все запросы к несуществующим файлам в сценарий, но я предполагаю, что это именно то, что вы ищете.

Этот однострочник будет делать именно это и является стандартным способом реализации паттерна фронт-контроллера в nginx.

1
ответ дан 4 December 2019 в 16:00

Теги

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