Ubuntu Server 22.04 기준
예를들어 내 도메인이 example.com인데
굳이 http://example.com:3000/ 이런식으로 안해도
aaa.example.com 으로 연결했을때는 3000포트,
bbb.example.com으로 연결했을때는 3001포트로 연결되게
(주소창은 bbb.example.com으로 유지, 뒤에 뭐가 붙어있어도 그대로 가져감
예를들어서 bbb.example.com/testpage => example.com:3001/testpage의 내용 보여줌)
이렇게 서브도메인(3차도메인)에 포트를 연결하고싶다 하면 apache2를 이용하면 됨.
보통 node.js로 포트 여러개 열어서 웹 여러개 만들거나 웹사이트를 두 개 이상 만들때 아이피를 두 개 이상 할당받아서 서버를 두개 이상 둬야하나 했는데
이런 방법이 있었다.
아래 방법대로 따라하면된다.
지금 셋팅해놓고 나중에 까먹을까봐 기록해둠
1. apache2 설치
$ sudo apt-get update
$ sudo apt-get -y install apache2
중간에 -y를 넣어서 설치과정중에
Do you want to continue? [Y/n] 이딴거 뜨는거 다 자동으로 y로 해줌
2. apache2 서버 시작 / 확인
apache2 서버 시작
$ sudo service apache2 start
서비스가 제대로 동작중인지 확인하기
$ sudo systemctl status apache2.service
다음과 같이 Active가 active (running)으로 뜨면 정상
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-02-01 20:10:42 KST; 17min ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 7029 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 7033 (apache2)
Tasks: 55 (limit: 18839)
Memory: 10.7M
CPU: 257ms
CGroup: /system.slice/apache2.service
├─7033 /usr/sbin/apache2 -k start
├─7034 /usr/sbin/apache2 -k start
└─7035 /usr/sbin/apache2 -k start
2월 01 20:10:42 user systemd[1]: Starting The Apache HTTP Server...
아니면 이전에 뭔가 설정 잘못건드린것이니 2-1로.
이후 http://(서버ip)/ 로 접속하면 아래와 같은 사이트가 나와야 일단 정상.
2-1. 계속 오류 뜰 때 재설치
일반적으로 apt-get remove로 재설치하면 설정파일 남고 다 안지워짐
따라서 apt-get purge 이용
$ sudo apt-get purge apache2
이후 1번부터 다시 시작
3. Apache2에서 Proxy 관련 mods 활성화
-----------------------------------------수정-------------------------------------------
이거 알아보니까 3번은
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
이거 두개만 치면 끝나는거였음ㅋ
두개 치고 4번으로 넘어가셈
-----------------------------------------------------------------------------------------
이따가 configure 파일에서 Proxy 관련 옵션을 작성할건데 그 전에 Proxy 관련 mod들을 활성화해놔야함
root@user:~# cd /etc/apache2/mods-available/
root@user:/etc/apache2/mods-available# ls | grep proxy
proxy.conf
proxy.load
proxy_ajp.load
proxy_balancer.conf
proxy_balancer.load
proxy_connect.load
proxy_express.load
proxy_fcgi.load
proxy_fdpass.load
proxy_ftp.conf
proxy_ftp.load
proxy_hcheck.load
proxy_html.conf
proxy_html.load
proxy_http.load
proxy_http2.load
proxy_scgi.load
proxy_uwsgi.load
proxy_wstunnel.load
root@user:/etc/apache2/mods-available#
위에건 안따라쳐도됨
/etc/apache2/ 폴더 안에 mods-available 폴더랑 mods-enabled 폴더가 있는데 available에 있는 모드를 활성화시키려면 모드파일을 mods-enabled 폴더에 ln -s(링크) 시켜줘야한다. 링크라는게 그냥 대충 윈도우에서 바로가기 만드는거 비슷한거.
우리는 proxy중에서 대충 http 관련 파일들이 필요하다. proxy_http.load, proxy_http2.load 파일을 링크시킬건데 둘만 활성화해보니 오류나더라.
그래서 proxy.conf랑 proxy.load 이 두 놈도 뭔가 관련있는거같아서 같이 활성화하니 오류가 안남.
결론은 그냥 아래 따라치셈
$ sudo ln -s /etc/apache2/mods-available/proxy_http.load /etc/apache2/mods-enabled/proxy_http.load
$ sudo ln -s /etc/apache2/mods-available/proxy_http2.load /etc/apache2/mods-enabled/proxy_http2.load
$ sudo ln -s /etc/apache2/mods-available/proxy.conf /etc/apache2/mods-enabled/proxy.conf
$ sudo ln -s /etc/apache2/mods-available/proxy.load /etc/apache2/mods-enabled/proxy.load
이렇게 4개 치고
$ sudo service apache2 restart
$ sudo systemctl status apache2.service
apache2 서비스 재시작, 이후 제대로 동작중인지 확인(위 2번 참고)
4. 하위 도메인 http 활성 파일 작성
/etc/apache2/sites-available 디렉토리에 aaa.example.com.conf 파일을 만들어야한다.
자신의 도메인이 example.com이고 서브도메인 aaa를 추가해서 aaa.example.com을 포트 3000으로 연결하고싶은 경우를 가정하면 아래와 같이 작성한다.
먼저 aaa.example.com.conf(이름 알아서 잘 수정하셈) 파일을 만든다
$ sudo vi /etc/apache2/sites-available/aaa.example.com.conf
vi 에디터가 열리면서 동시에 파일이 생긴다.
i를 눌러 수정모드로 바꾸고 아래와 같이 입력해주자
<VirtualHost *:80>
ServerName aaa.example.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://example.com:3000/
ProxyPassReverse / http://example.com:3000/
</VirtualHost>
ESC를 누르고 :wq 엔터 차례로 눌러 저장하고 나가준다.
그다음 /etc/apache2/sites-enabled 폴더에 방금 만든 파일의 링크 파일을 만들어준다.
$ sudo ln -s /etc/apache2/sites-available/aaa.example.com.conf /etc/apache2/sites-enabled/aaa.example.com.conf
그런 다음 서비스 재시작 후 잘 작동하는지 확인
$ sudo service apache2 restart
$ sudo systemctl status apache2.service
만약 여기서 오류가 난다면 /etc/apache2/sites-available/aaa.example.com.conf 파일 쓸때 오타낸거니 다시 오타 찾아서 잘 써보시길.
어차피 sites-enabled에 넣은 파일은 sites-available 안에 있는거 링크파일이라 sites-available 안에 있는거만 수정하면 따로 다시 링크 안해도됨
그리고 여기서 서버가 껐다켜져도 다시 실행되게 부팅시 자동시작 등록해두자.
$ sudo systemctl enable apache2
5. DNS CNAME 레코드 등록
본인의 도메인 제공업체 사이트에서 DNS 설정에 들어가 다음과같이 레코드를 하나 더 등록해준다.
타입: CNAME
호스트:aaa
값/위치: example.com.
참고로 값/위치에 마지막에 점 하나 붙여줘야한다.
6. 끝
이제 aaa.example.com으로 접속해보면
example.com:3000으로 접속해야만 보였던 사이트가 나오게 된다.
물론 이때 80번 포트는 열려있어야 한다.
포트포워딩은 알아서 잘 해보셈 구글에 자료많음
7. 추가로 해주면 좋은 host 설정
$ sudo vi /etc/hosts
127.0.0.1 localhost
127.0.1.1 ubuntu
127.0.0.1 example.com (이 부분을 새로 추가)
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
이렇게 /etc/hosts 파일에 example.com을 추가하면 굳이 DNS서버를 거치지 않고 로컬 환경으로 바로 연결해주어 사이트 로딩시 더 빠르게 처리된다.
다음글에서는
이상태에서 https SSL 인증서 받고 설정하는법 작성할예정
'서버(리눅스)' 카테고리의 다른 글
apache2 SSL https 활성화하기 (0) | 2023.02.03 |
---|---|
SSL 인증서를 발급받아 https 프로토콜을 활성화하자 - Let's Encrypt 와일드카드 인증서 (0) | 2023.02.03 |
새 서버 장만기(우분투 서버 22.04/Dell Optiplex 3070 Micro) (1) | 2023.02.01 |