Symfony 3:路由与子域不起作用在prod
问题描述:
这将使6小时,我在这个问题上,我有一个路由与主机要求,以处理子域。它完美地在开发中,但在此举办我重复同样的错误,无论我做什么:Symfony 3:路由与子域不起作用在prod
No route found for "GET /login"" at /var/www/app/var/cache/prod/classes.php
这里是我的路由:
app_front_office:
resource: "@AppFrontOfficeBundle/Resources/config/routing.yml"
prefix: /
host: "%front_office_domain%"
app_back_office:
resource: "@AppBackOfficeBundle/Resources/config/routing.yml"
prefix: /
host: "%back_office_domain%"
security.yml:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
form_login:
login_path: app_back_office_security_login
check_path: app_back_office_security_login
logout:
path: app_back_office_security_logout
target: app_back_office_dashboard_index
remember_me:
secret: '%secret%'
lifetime: 2630000
path: app_back_office_dashboard_index
always_remember_me: true
domain: '%cookie_domain%'
user_provider: main_provider
access_control:
- { host: '%back_office_domain%',path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { host: '%back_office_domain%',path: ^/, role: ROLE_ADMIN }
参数.yml:
cookie_domain: .domain.com
front_office_domain: staging.domain.com
back_office_domain: bo-staging.domain.com
调试:路由器:
app_front_office_homepage ANY ANY staging.domain.com /
fos_js_routing_js ANY ANY ANY /js/routing.{_format}
app_back_office_dashboard_index GET ANY bo-staging.domain.com /
app_back_office_security_login GET|POST ANY bo-staging.domain.com /login
app_back_office_security_logout ANY ANY bo-staging.domain.com /logout
app_back_office_subscription_plan_list_ajax GET ANY bo-staging.domain.com /subscriptions/list
app_back_office_user_index GET ANY bo-staging.domain.com /users
app_back_office_user_profile GET ANY bo-staging.domain.com /users/profile/{userId}
app_back_office_user_update_field_ajax POST ANY bo-staging.domain.com /users/updateField
app_back_office_user_delete_ajax DELETE ANY bo-staging.domain.com /users/delete/{userId}
app_back_office_user_recover_ajax POST ANY bo-staging.domain.com /users/recover/{userId}
app_back_office_user_list_ajax GET ANY bo-staging.domain.com /users/list
的nginx的conf:
server {
listen 443 default_server ssl;
server_name staging.domain.com api-staging.domain.com dashboard-staging.domain.com bo-staging.domain.com;
root /var/www/wapp/web;
ssl on;
ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
ssl_certificate_key /etc/nginx/ssl/domain_com.key;
# ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location/{
try_files $uri /app.php$is_args$args;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
internal;
}
location ~ \.php$ {
return 404;
}
error_log /var/log/nginx/app_error.log;
access_log /var/log/nginx/app_access.log;
}
# HTTP server
server {
listen 80;
server_name staging.domain.com api-staging.domain.com dashboard-staging.domain.com bo-staging.domain.com;
root /var/www/app/web;
location/{
return 301 https://$server_name$request_uri;
}
}
感谢您的帮助,我会疯掉如果我能不能解决问题:对
答
感谢大家的帮助,我找到了一个安纳塞尔。负载平衡器运行状况检查程序配置为检查“/ login”路径,但我不知道此配置,因此可以解释错误。
您是否清除了prod缓存?我假设你在你的主机上有dns通配符和Apache配置。 –
你想要访问什么网址? –
@MehmetSoylu是的,我已经清除缓存,没有通配符存在子域记录和nginx服务器。 – Shked0wn