2017-05-04 15 views
0

私はASP.NET Core MVCアプリケーションを作成し、それをLinuxサーバーにデプロイしました。私がsitename.comに行くと、ブラウザーはHome/Indexページを表示します。asp.net core on linux with nginx routingが動作しません

しかし、私はsitename.com/Admin/Login nginxのは404 Not Foundエラーがスローされますようsitename.com/Home/Indexまたは別のコントローラを移動しよう。何が問題になるはずですか?

私のStartup.cs/Configureメソッドです。ここで

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseBrowserLink(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 

     app.UseStaticFiles(); 

     app.UseSession(); 

     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 

sites-availableフォルダ

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    root /var/www/sitename.com; 
    index index.html index.htm; 

    server_name sitename.com www.sitename.com; 

    location/{ 
     try_files $uri $uri/ =404; 
     proxy_pass http://127.0.0.1:5000; 
    } 

nginx.conf

user www-data; 
    worker_processes 4; 
    pid /run/nginx.pid; 

    events { 
     worker_connections 768; 
    } 

    http { 

     sendfile on; 
     tcp_nopush on; 
     tcp_nodelay on; 
     keepalive_timeout 65; 
     types_hash_max_size 2048; 

     include /etc/nginx/mime.types; 
     default_type application/octet-stream; 

     access_log /var/log/nginx/access.log; 
     error_log /var/log/nginx/error.log; 

     gzip on; 
     gzip_disable "msie6"; 

     include /etc/nginx/conf.d/*.conf; 
     include /etc/nginx/sites-enabled/*; 
    } 

    mail { 

    } 
+0

これらのリクエストは、直接Kestrelに送信すると機能しますか? –

+0

これらの行をbashで実行すると、正しいhtml応答が得られます。 'curl http:// localhost:5000/Home/Index'または' curl http:// localhost:5000/Admin/Login' @AlexeyAndrushkevich –

+0

あなたの 'nginx.conf'ファイルを共有して、正しく設定されているか確認してください。 –

答えて

4

から私のウェブサイトの設定は、404を返し、特定のURLがファイルシステム上に存在している場合、それはテストだとしてtry_files $uri $uri/ =404;を削除し、そうでない場合であります。

しかし、/Home/Indexは、既存のファイルにはマッピングされず、コントローラのアクションにマップされるルートなので、404エラーが発生します。

関連する問題