Htaccess strange behaviour with Nginx
Posted
by
Termos
on Server Fault
See other posts from Server Fault
or by Termos
Published on 2012-03-25T22:39:57Z
Indexed on
2012/03/25
23:31 UTC
Read the original article
Hit count: 237
I have a site running on Nginx (v1.0.14) serving as reverse proxy which proxies requests to Apache (v2.2.19). So Nginx runs on port 80, Apache is on 8080.
Overall site works fine except that i cannot block access to certain directories with .htaccess file.
For example i have 'my-protected-directory' on 'www.site.com' Inside it i have htaccess with following code:
<Files *>
order deny,allow
deny from all
allow from 1.2.3.4 <--- my ip address here
</Files>
When i try to access this page with my ip (1.2.3.4) i get 404 error which is not what i expect:
http://www.site.com/my-protected-directory
However everything works as expected when this page is served directly by Apache. I can see this page, everyone else can't.
http://www.site.com:8080/my-protected-directory
Update. Nginx config (7.1.3.7 is site ip.):
user apache;
worker_processes 4;
error_log logs/error.log;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 65;
gzip on;
gzip_min_length 1024;
gzip_http_version 1.1;
gzip_proxied any;
gzip_comp_level 5;
gzip_types text/plain text/css
application/x-javascript text/xml
application/xml application/xml+rss
text/javascript image/x-icon;
server {
listen 80;
server_name www.site.com site.com 7.1.3.7;
access_log logs/host.access.log main;
# serve static files
location ~* ^.+.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
root /var/www/vhosts/www.site.com/httpdocs;
proxy_set_header Range "";
expires 30d;
}
# pass requests for dynamic content to Apache
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Range "";
proxy_pass http://7.1.3.7:8080;
}
}
Could please anyone tell me what is wrong and how this can be fixed ?
© Server Fault or respective owner