외부 접근을 위한 프록시 설정
둘러보기로 이동
검색으로 이동
개요[편집 | 원본 편집]
아쉬움[편집 | 원본 편집]
- 회사망이나 학교 내부에서 웹서버 따위를 운용할 때 외부에서의 접속이 막혀 있어 범용성에서 제약이 있다.
- 학교 내부에서 사용할 때에도 하나의 공유기가 아니라 여러 공유기를 이용하는데, 모두가 동일한 공유기에 모두가 접속해야 하는 불편이 있어 외부에서 웹서버를 이용할 수 있는 전략이 필요하다.
- 학생들이 만든 웹사이트, 서비스를 꾸준히 이용하고자 할 때 학생 개인의 사비를 들여 외부에 개인 서버를 구축하여 사용하는 경우가 많다.
- 아마존 등에서 클라우드 서비스를 이용한다 하더라도 행정적 빈틈으로 결재가 늦어지는 상황이 발생하여 불편을 겪는 경우가 있다.
단계[편집 | 원본 편집]
단계 | 설명 | 비고 |
---|---|---|
본 서버 nginx설정 | 기본적으로 nginx로 운영한다고 가정한다.
|
server {
listen 80;
# 프록시, 로컬, 도메인이이 다 들어가야 점검할 때 편함.
server_name smwiki.info 100.101.144.125 100.117.229.125 192.168.0.8;
root /var/www/html/mediawiki;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
# 특정 PHP 파일만 실행 (보안 강화)
location ~ ^/(index|api|load)\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 모든 다른 PHP 파일 실행 차단
location ~ \.php$ {
return 403;
}
location ~ /\.ht {
deny all;
}
# 업로드 파일 크기 제한
client_max_body_size 20M;
}
|
프록시 서버 설정 |
|
server {
listen 1080;
# 서버네임 옵션.. 불편. 마지막에 완성하고 도메인만 살리면 된다.
#server_name smwiki.info 100.117.229.125 192.168.0.8;
server_tokens off;
location / {
proxy_pass http://100.101.144.125:80; # 본 서버의 ip 지정
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
|
포트포워딩 및 클라우드플레어 설정 |
|
결론[편집 | 원본 편집]
보안 관련[편집 | 원본 편집]
- 기본적으로 100.x.x.x 형태의 ip는 tailscale이 연결된 기기 간에서만 사용할 수 있기에 외부 기기에서 접속은 불가하다. ssh 등의 탈취 위험이 적다.
- 외부에서 허용된 server_name은 도메인 뿐이고, 열려있는 포트는 본 서버 입장에선 오로지 80번 포트이기에 해킹 등 조작의 위험이 적다.
자주 하는 실수, 문제해결.[편집 | 원본 편집]
ss -tulnp | grep 10000
로 특정 포트가 열려 있는지 쉽게 확인 가능. 안되어 있다면 이전의 설정에서 문제가 생긴 것.- nginx site-available에서 작성하고 enabled로 안옮기면 적용이 안됨.
sudo ln -s /etc/nginx/sites-available/your_config_file /etc/nginx/sites-enabled/