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; 
     } 
    } 

感谢您的帮助,我会疯掉如果我能不能解决问题:对

+0

您是否清除了prod缓存?我假设你在你的主机上有dns通配符和Apache配置。 –

+0

你想要访问什么网址? –

+0

@MehmetSoylu是的,我已经清除缓存,没有通配符存在子域记录和nginx服务器。 – Shked0wn

感谢大家的帮助,我找到了一个安纳塞尔。负载平衡器运行状况检查程序配置为检查“/ login”路径,但我不知道此配置,因此可以解释错误。