skip to Main Content

I wanted to move a project I have working on Windows to run on a Unix machine.

The machine running on Debian 9 with Nginx.

This project runs absolutely fine on Windows with IIS.

I’ve followed all the instructions on here created a service for this to run on the start of the machine and Nginx configuration to proxy the connection from the port I want to use to port 5000.

When I start the application running Dotnet Myddl.dll it starts and says it is only listening on port 5000.

Then when I try to access it, I can see a warning.

warn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3] Failed to determine the HTTPS port for redirect.

I know it is related to my app redirecting to HTTPS and not knowing where to redirect it, but how do I resolve this?

My service

[Unit]
Description=Myapp API

[Service]
WorkingDirectory=/var/www/myapp/publish
ExecStart=/usr/bin/dotnet /var/www/myapp/publish/myapp.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target





   server {
    listen        6969;
    server_name   mysite.net *.mysite.net;
    location / {
        proxy_pass         http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header   Upgrade $http_upgrade;
        proxy_set_header   Connection keep-alive;
        proxy_set_header   Host $host;
        proxy_cache_bypass $http_upgrade;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
    }
}

EDIT:

I’ve been trying to resolve this and still can’t. When I start the app on the unix machine I get the following

root@myhost:/var/www/myapp/publish# dotnet Myapp.dll info: Microsoft.Hosting.Lifetime[0] Now listening on: localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Production info: Microsoft.Hosting.Lifetime[0] Content root path: /var/www/myapp/publish 

Obviously it is missing https option, and I can’t figure why.

EDIT2:
I’ve published the app as self contained for Linux-x64, and now I do not get the warning saying that it couldn’t determine the https port, on my browser I get redirected to https://mydomain:5001 when I access it on http://mydomain:6969
Still I do not get the app listening on https on Unix, just on Windows.

EDIT3:
Noticed that if I go to one of my endpoints e.g. http://IP:6969/api/users I get a 500 response.

EDIT4:
When I was loading my application locally, I was getting straight through to the swagger page, such as /swagger/index.html, for some reason my API when complied for Linux does not accept this URL and returns me a 404, but if I get to one of my endpoints e.g. /api/users, it does return me the data I was expecting for.

2

Answers


  1. Chosen as BEST ANSWER

    I was trying to Migrate an API, and as on Windows it was returning me to my swagger page located on /swagger/index.html I was expecting the same to happen, which for some reason, doesn't.

    So if I access one of my endpoints (e.g. /api/users) it does work fine.


  2. Default https port should be 5001.

    You can set https port following offical docs.

    Or disable relatied middlware. Use nginx for https termination if needed.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search