我们需要为一个虚拟主机配置基本身份验证。当仅使用基本身份验证(没有列入白名单的IP地址)时,我们会陷入登录循环。添加我们的外部IP地址后,它就可以使用。
前端基于vue(afaik),而php应用程序基于symfony。 symfony应用程序是具有登录名等的主应用程序。
配置如下:
server {
listen 80;
listen 443 ssl;
server_name subdomain.domain.com;
charset utf8;
root /var/www/subdomain.domain.com/frontend/web;
index app.php index.php index.html;
access_log /var/www/subdomain.domain.com/nginx.access.log;
error_log /var/www/subdomain.domain.com/nginx.error.log;
location / {
try_files $uri /index.html$is_args$args;
}
error_page 500 502 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ /\.ht {
deny all;
}
location ^~ /dashboard {
alias /var/www/subdomain.domain.com/backend/public;
try_files $uri $uri/ @dashboard;
location ~ \.php(/|$) {
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_connect_timeout 600s;
fastcgi_read_timeout 600s;
proxy_buffer_size 512k;
proxy_buffers 16 512k;
proxy_busy_buffers_size 512k;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_pass 127.0.0.1:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
}
location @dashboard {
rewrite /dashboard/(.*)$ /dashboard/index.php?/$1 last;
}
### SSL Config ###
...
###
}
在没有基本身份验证的情况下访问网站时-一切正常。添加以下代码块对我们有用(ip白名单)
satisfy any;
auth_basic “Protected”;
auth_basic_user_file /etc/nginx/.htpasswd;
allow 127.0.0.1;
allow our.ip.address.external;
allow the.host.ip.itself;
deny all;
从白名单中删除自己的IP地址时,我们陷入了登录循环。它要求基本的auth用户并每次通过。当访问域时(vue前端),我们将重定向到symfony应用进行登录(... / dashboard),成功登录后将看到真实的仪表板(vue,其中api调用了后端,afaik)。
我不知道,为什么IP白名单有效,但普通的基本auth无效?
有人有什么想法吗?
预先感谢 西蒙