【发布时间】:2016-12-09 12:41:07
【问题描述】:
我启动了一个运行 Ubuntu 16.04 的新 VM 并运行了命令。 dotnet new -t web 创建一个新的基本 MVC Web 模板。接下来我运行应用程序,连接成功。
之后我修改了 nginx.conf 以使用 SSL
server {
listen 443 http2 ssl default;
ssl_certificate /etc/ssl/certs/testCert.crt;
ssl_certificate_key /etc/ssl/certs/testCert.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_ecdh_curve secp384r1;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_stapling on;
ssl_stapling_verify on;
location / {
proxy_pass http://localhost:5000;
proxy_cache_bypass $http_upgrade;
proxy_redirect off;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
}
}
再次运行应用程序,它在 HTTPS 下运行且没有错误。
然后我在 Startup.cs 中配置 MVC 服务以强制执行 HTTPS。
services.AddMvc(config =>
{
config.Filters.Add(new RequireHttpsAttribute());
});
最后我尝试再次连接但得到ERR_TOO_MANY_REDIRECTS。但是,如果我只在 Kestrel 上运行并配置一些选项,它就可以正常工作。
services.Configure<KestrelServerOptions>(options =>
{
options.AddServerHeader = false;
options.UseHttps("devcert.pfx", "password");
});
它似乎必须是 nginx,但它可能是 MVC/ASP.NET Core 的问题。如何进一步诊断或解决此问题?
【问题讨论】:
标签: c# asp.net-mvc ssl nginx asp.net-core