여러가지 서비스를 하나의 NAS 에서 운영하면 접속 방법의 관리가 귀찮아진다. 보통은 포트포워딩을 이용해서 관리하는데, 웹 서비스의 개수가 늘어나고 SSL 설정까지 하면, 포트포워딩으로는 여러가지 귀찮은 일이 생긴다. 하지만, 리버스 프록시 서버를 설정해서 80번과 443번 포트를 열어두면, 간단하게 서버네임 – 서브도메인, 도메인 – 을 이용해서 각 서비스로 연결 할 수 있다.
검색해보니 리버스 프록시로 아파치보다 NginX 를 좀 더 많이 사용하는 것 같다. 검색 결과에 NginX 를 사용한 것이 훨씬 더 많다. 그러니 나도…
작업 순서는
- Jail 생성
- NginX 설치
- NginX 설정
Jail 생성
그냥 만들면 된다. Base 와 Clone 의 차이는 있지만, 어차피 다 된다. NAT로 하면 일이 매우 어려워진다. 필히 공유기의 DHCP 를 활용하자.

NginX 설치
sh> pkg update
sh> pkg install nginx
NginX 설정
sh> cd /usr/local/etc/nginx
sh> mkdir domains (이름은 맘대로)
nginx 폴더 안에 설정 파일을 저장할 곳을 만든다. 이름은 적당히 정한다. 나는 도메인 별로 구분했기 때문에 저렇게 이름을 지었다.
sh> ee nginx.conf
NginX 설정 파일을 에디터로 연다. 참고로 ee 는 유니코드를 지원하지 않기 때문에, 영어 말고는 적으면 안된다. 주석도 예외가 아니다. 꼭 안되는 것은 아닌데, utf8 이 아니라고 땡깡부리는 놈 – Certbot – 들이 있다.
...
http {
include mime.types;
default_type application/octet-stream;
include domains/*;
....
include 구문에 위에서 생성한 폴더를 넣는다.
저장하고 다음으로…
sh> cd domains
sh> ee 100_site_default.conf
기본 설정 파일을 설정한다. 그냥 IP 로 접속하거나, 등록되지 않은 도메인으로 접속하면 이 설정이 적용된다.
server
{
listen 80 default;
server_name _;
location /
{
root /usr/local/www/nginx;
index index.html;
}
}
여기까지가 리버스 프록시 서버의 기본 설정이다. 확인을 위해 서버를 재시작한다.
sh> service nginx restart
리버스 프록시 서버의 내부 IP 로 접속하면 index.html 파일이 보여야 정상이다. 80번 포트에 대한 포트포워딩 설정까지 되어 있다면 외부 IP 나, 미리 설정한 도메인들로 접속해서 확인할 수 있다.
sh> ee 101_site_blog.conf
이제 본론이다. 아래 내용을 붙여 넣고, Server_name 에 Domain 을, Proxy_pass 에 연결할 Jail 의 IP 를 넣어 준다.
server
{
server_name blog.example.com;
listen 80;
client_max_body_size 256M;
location /
{
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
# My Server
proxy_pass http://192.168.0.128;
}
}
여기까지 했으면, 다음부터는 반복 작업이다. 위 파일만 복사해서 server_name 에 사용 할 도메인, proxy_pass 에 연결할 IP 를 넣어주면 된다. 192.168.0.128:8080; 도 되고, 192.168.0.128/wordpress/; 같은 식도 된다.
중간의 client_max_body 옵션은 최대 파일 전송 용량이다. 해당 서버에서 아무리 설정을 건드려도 ( 특히 php.ini 같은 거…) 여기서 안 늘려주면 다 소용 없다.
설정 파일을 저장하고 nginx 를 재시작 하면, 도메인으로 각 서비스에 접속할 수 있게 된다. 여기서 만족해도 되지만, SSL 을 쓸 거면 삽질을 좀 더 해야 한다.