Я пытаюсь ограничить доступ к части моего веб-сайта только для определенного компьютера в локальной сети, используя 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;
}
Попробуйте следующее:
location /blog {
index /rewrite/bloguri.php;
try_files $uri $uri/ /rewrite/bloguri.php;
}
В вашем вопросе явно не указано, что вы хотите перенаправить все запросы к несуществующим файлам в сценарий, но я предполагаю, что это именно то, что вы ищете.
Этот однострочник будет делать именно это и является стандартным способом реализации паттерна фронт-контроллера в nginx.