[Apache 프록시] .net6 core 설치 / apache 프록시 설정 > Linux/Apm

본문 바로가기
사이트 내 전체검색

Linux/Apm

[Apache 프록시] .net6 core 설치 / apache 프록시 설정

페이지 정보

작성자 sbLAB 댓글 0건 조회 4,577회 작성일 22-03-05 17:51

본문

[환경] - 개념메모 :


- Blazor WASM / Blazor Server 테스트 개발 결과, 미완의 자마린 모바일 수준과 유사하였고.

- 웹소켓으로 주고 받는 SignalR 구조 한계때문에 웹모바일/웹모두 적합하지 않다(시간낭비)

- Blazor + 윈도OS 가 아닌 Blazor+리눅스 구성할 의미가 없으나, 리눅스에서 웹사이트 구동테스트.

- C# + Visual Studio 사용이 가능하다는 매력이 있었으나, 컴파일 Publish하므로 웹에서도 dll 을 벗어날수 없음.


Linux Mint / xampp  


[.net6 core 경우] 


아래처럼 .net6  버전을 설치해주고....

[Linux Mint 20.3 <- Ubuntu LTS20.4 Based]

sudo apt update 

sudo apt install apt-transport-https 

sudo apt install dotnet-sdk-6.0   <-- sdk설치(런타임포함됨)

sudo apt install dotnet-runtime-6.0 <- 런타임만 설치할때

dotnet --info <- 설치정보


[참고] /usr/bin/dotnet <======== 실행파일 위치



닷넷코어는 kestrel 자체 웹서버를 포함하고 있다.

예를들어 blazor 에서 ok.dll 웹사이트 파일을 /home/okwind/dotnet 폴더 안에 publish 했다면.. 

여기에서 okwind 는  /home/okwind 이하 폴더의 사용자계정 명이며, 해당 폴더에 권한을 갖고 있다.


# dotnet ok.dll  이라고 실행하면 http://localhost:5000   http://localhost:5001 형태로 리스너가 작동된다.

그렇다고 이렇게 실제 사용할수 없으니..


kestrel 서비스를 만들어주고... 작동설정을 한다.. 아래처럼


cd /etc/systemd/system

nano kestrel-vipp.service 


[Unit]
Description=Example .NET Web API App running on Mint20.3

[Service]
WorkingDirectory=/home/okwind/dotnet
ExecStart=/usr/bin/dotnet /home/okwind/dotnet/ok.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=okwind <=== 디렉토리 권한을 가진 주인계정을 넣어준다.
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target



systemctl daemon-reload

systemctl start kestrel-okpp.service 

systemctl status kestrel-okpp.service  <---- Active: active (running) 작동확인 


systemctl enable kestrel-okpp.service <---- 자동로드 등록 

 

여기까지 하면 웹서버 리눅스 내부에서 실행중인 kestrel-okpp.service 서비스에 의해 http://localhost:5001 접속이 가능함..


외부에서 ok.kr 로 접속하고 싶다면?

xampp 의 apache 앞단에 두고 맡긴다.. 아래처럼..


[필요할때 예]

리눅스 서버에 nodejs 가 8000 포트로 서버구동 될때...

리눅스 서버에 .net6 으로 5000 포트에서 blazor 페이지가 구동될때..

---------------------------------------------------------

위 들을 뒤로 숨기고 웹서버 가장 앞단에 apache 를 두고.. 

클라에서 aa.kr  로 접속했을때 리눅스 서버에 127.0.0.1:8000  nodejs 웹서버로 패스해서 웹접속

예) 클라이언트 aa.kr/api  ==>  리눅스 nodejs 웹서버에서는 127.0.0.1:8000/api 로 연결됨


apache 는 xampp(리눅스버전) 로 설치되어 있다고 하고..

기본 설치 경로는 아래임...

/opt/lampp/etc/httpd.conf   <---- httpd.conf 경로

위 httpd.conf 파일에서 /opt/lampp/apache2/conf/httpd.conf 을 Include "/opt/lampp/apache2/conf/httpd.conf" 하고 있으므로,

/opt/lampp/apache2/conf/httpd.conf 파일을 수정해 주면 된다.


cd /opt/lampp/apache2/conf/

nano httpd.conf


Alias /bitnami/ "/opt/lampp/apache2/htdocs/"
Alias /bitnami "/opt/lampp/apache2/htdocs"

<Directory "/opt/lampp/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

위 내용은 xampp 로 설치해서 자동을 생긴것 /bitnami/ url에 대한 웹루트처리 부분 - 이 주제와 관련없음. 아래를 추가...


<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ServerName www.ok.kr
    ServerAlias *.ok.kr
   
    #ProxyRequests Off
    ProxyPreserveHost On  
   
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/  
   
    ServerAdmin root@localhost
    DocumentRoot /home/okwind/dotnet

    ErrorLog logs/error.log
    CustomLog logs/access.log combined
</VirtualHost>


service xampp restart 


이렇게 되면... 외부에서 ok.kr 로 접속하면... 웹서버의 127.0.0.1:5000 의 대기중인 .net core blazor 웹사이트 출력

만약 구동중엔 nodejs 웹경로가 127.0.0.1:8000 이라면 그걸 넣어주면 OK!!


[효과]

아파치가 앞서 막아주니 서버단의 포트 노출등을  감춰줄 수 있을 것이고..

아파치의 웹서버의 여러옵션들로 분기도 가능할것임..


그러나.. Blazor 는 내부에서 Websocket 사용됨.. 아파치가 Websocket 도 받아줄수 있도록 설정.. 아래..


<VirtualHost *:*>
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>

<VirtualHost *:80>
    ServerName www.ok.kr
    ServerAlias *.vv.kr

  RewriteEngine On
  RewriteCond %{HTTP:Connection} Upgrade [NC]
  RewriteCond %{HTTP:Upgrade} websocket [NC]
  RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P,L]


    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
   ProxyPassReverse / http://127.0.0.1:5000/

    ServerAdmin root@localhost
    DocumentRoot /home/okwind/dotnet

    ErrorLog logs/error.log
    CustomLog logs/access.log combined
</VirtualHost>


https://stackoverflow.com/questions/29792372/apache2-websockets-reverse-proxy-on-same-url 


service xampp restart




댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
220
어제
340
최대
1,279
전체
218,113

그누보드5
Copyright © sebom.com All rights reserved.