NGINX가 포함된 Ubuntu VM에서 실행되도록 내 .NET Core 앱이 어떻게 구성되어 있는지 확인하려면 어떻게 해야 하나요?

NGINX가 포함된 Ubuntu VM에서 실행되도록 내 .NET Core 앱이 어떻게 구성되어 있는지 확인하려면 어떻게 해야 하나요?

NGINX를 실행하는 Azure 호스팅 VM에서 systemd 기반 서비스로 실행되는 .NET Core 앱을 사용하고 있습니다. (VM은 개발 환경으로 의뢰됩니다.) 서버 IP를 가리키도록 Azure DNS를 사용하여 A 레코드를 설정했습니다. myapplication.mycompany.com브라우저에 지정된 호스트 이름( )을 입력하면 NGINX 시작 페이지가 표시됩니다.

여기에 이미지 설명을 입력하세요

애플리케이션 버전 번호를 반환할 것으로 예상되는 URL을 입력하면 404가 표시됩니다.

myapplication.mycompany.com/version.txt

을 실행하면 systemctl status myservicename.NET Core 서비스가 시작되고 기본 서비스가 다음과 같이 실행되는 것을 볼 수 있습니다.

   CGroup: /system.slice/myservicename.service
           └─...PID... /usr/bin/dotnet /var/aspnetcore/myservicename/myservice.dll

그런 다음 을 보면 /var/aspnetcore/myservicename/wwwroot파일이 표시됩니다.version.txt

curl -v localhost:5000을 반환 하고 을 302 found표시 Server: Kestrel하므로 나는믿다Kestrel이 포트 5000에서 서비스를 제공하고 있음

NGINX 구성을 보면생산VM(.NET Core 서비스의 유사한 인스턴스를 실행하는 매우 유사한 이미지)에서는 Kestrel에 특별한 연결을 수행하는 것처럼 보이는 것이 없습니다. 다음을 사용하여 NGINX 구성을 봅니다.

cat /etc/nginx/nginx.conf

cat /etc/nginx/conf.d

(이 파일은 개발 VM의 파일과 동일하게 보입니다.)

.NET Core 앱으로 요청을 라우팅하기 위한 구성이 무엇인지 확인하려면 어디를 살펴봐야 합니까? 그리고 내가 요청할 때 404를 발생시킬 수 있는 명백한 것이 있습니까 ...hostname.../version.txt?

업데이트

/etc/nginx/sites-available/default나는 NGINX 웹 서버에 몇 가지 주요 설정이 있다는 것을 알았습니다 . 그래서 내 호스트 이름과 일치하는 서버 이름에 대한 설정을 추가했습니다.

server {
    listen 80;
    server_name myapplication.mycompany.com;

내가 방문했을 때 myapplication.mycompany.com/version.txt나는 여전히 다음을 얻습니다 404.

답변1

웹사이트의 가용성을 결정하는 2개의 구성 파일이 있다는 것을 알았습니다.

/etc/nginx/sites-available/default

/etc/nginx/sites-enabled/default

NGINX 서버에서 사용 가능하고 활성화된 웹 사이트를 확인하려면 두 가지 모두 유사한 라우팅을 구성해야 합니다.

두 구성 파일 모두 NGINX가 요청을 수신하는 데 사용하는 포트(80)를 설정하고 Azure DNS 호스트 이름을 NGINX 웹 서버에 연결하는 server_name을 설정합니다.

server {
    listen 80;
    server_name myapplication.mycompany.com;

또한 구성은 요청이 Kestrel로 역방향 프록시(기본적으로 '전달')되는 방법을 결정합니다. 여기서 요청은 .NET Core MVC 라우팅을 통해 앱에서 처리됩니다.

location / {
    ... cacheing stuff

proxy_pass <http://localhost:5000;>

관련 정보