도메인.com 접속 시 하위폴더(그누보드)로 리다이렉트 301 이동 방법
본문
안녕하세요 이것저것 검색해서 적용해봤는데 감이 안잡혀서 이렇게 질문 드리게 되었습니다.
시놀로지를 이용해 웹서버 만들어서 그누보드리빌더를 설치하였습니다.
질문내용은..
ㅁ 도메인.com >> 접속 시 >> 그누보드(rebuilder) 폴더로 접속 하고 싶습니다.
ㅁ 도메인.com > 그누보드(rebuilder) 폴도로 자동으로 리다이렉트하기를 원하는데..
현재 폴도 구성은 아래와 같습니다.
일단 제가 해본것은 web 폴더에 .htaccess 파일을 만들어서
아래처럼 코드를 넣었는데 반응이 없어서, 어떠한 방식으로 해야하는지 질문 드려봅니다.~
---------------------------------------------------------------------
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^도메인\.com [NC]
RewriteRule ^$ /rebuilder/ [L]
RewriteCond %{HTTP_HOST} ^도메인\.com [NC]
RewriteCond %{REQUEST_URI} !^/rebuilder/
RewriteRule ^(.*)$ /rebuilder/$1 [L]
--------------------------------------------------------------
답변 5
※ DSM에 login. ~
- web station 선택 ~
- '웹 서비스 ' 탭 선택 ~
- '가본 서비스' 체크 후, '편집''을 꾹 누르면, 팝업 창이 뜸 ~
> '기본 서비스 편집' 창에서 ~
- 'HTTP 백엔드 서버:" 풀다운 탭을 눌러, 사용 할 서버 선택 ~ ex, "nginx" 선택
- 'PHP:' 풀다운 탭을 눌러, 사용 할 스크립트 선택 : ex, "Default Profile(PHP 8.2)" 선택
- PHP 8.2는 '패키지 선터'에서 설치 하셔야, 스크롤 탭에 나타남.
> > > "저장" ~ ~ ~ 끝 .
■ 중요한 체크 포인트가 있습니다.
- 웹 개발 트렌드가 정적 HTML만으로는 부족하기에,
> 아마 index.php "인덱싱"이 않되여 있어서 그럴 수도 있으니,
> web/에 .htaccess 파일을 만드시거나,
++ > 그것 귀찮으시면 index.html을 "index.php,"로 개명을 시키세요. ㅋ ㅋ
아 넵 답변 감사드립니다.
현재 시놀로지에 설치는 완료하였습니다. 다만
접속 방법이 도메인.com/rebuilder
이렇게 해야 메인에 접속 할 수 있어서요.
이걸 301 디이렉트로
도메인.com 입력하면 > 도메인.com/rebuilder
로 접속할수 있게 하고 싶어서요
RewriteEngine On
RewriteBase /
여기 밑에 아래 코드 넣어보세요
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^ /rebuilder/ [L]
* /index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=/rebuilder">
<title>Redirecting...</title>
</head>
<body>
<script>
window.location.href = "/rebuilder";
</script>
</body>
</html>
※ DSM에서 리버스 프록시 설정 시 ;
proxy를 사용한 /rebuilder/, 이와 같은 sub-경로로 직접 리디렉션하는 것은 허용되지 않음.
※ 그리고 첩부하신 redirect-config는 .htaccess 파일 같습니다?
>>> nginx server에서는 .htaccess 파일은 지원하지 않음.
※ DNS에서 해결책 ;
>>> /rebuilder/, sub-경로를 서브 도메인(rebuilder.도메인.com)을 사용하여 웹서비스를 만들고
이 도메인(rebuilder.도메인.com)을 리버스 proxy로 reditect시킴.
※ '첨부된 이미지'를 보니, (DS923)/web,, 이 폴더를 사용 하시는 군요?
>>> '도메인.com',이 DS923의 기본 DNS군요 !
> nginc-config를 다루실 수 있더라도
이 NAS에 기본으로 연결된 server-name(DNS)의 config를 바꾸기는 쉽지 않음. -
- 바꾸어도 휘발성 저장이여서, nginx를 재시작하면 초기화됨 - 시놀로지 firmware 설정인 듯~
※ DNS을 사용 하지 않는 해결책 ;
>>> DS923의 DSM에서 도메인(도메인.com)을 사용 하지 않음, - "웹스테이션 설정"에서 제거.
>>> 터미널(SSH 등)이나 FileZilla(ftp, sftp) 등으로 server에 접속 ,
/usr/local/etc/nginx/sites-enabled, 이 폴더에
도메인(도메인.com)의 서벼구성 파일(도메인_com.conf)을 아래와 깉이 만들어 추가.
server {
listen 80;
server_name 도메인.com www.도메인.com;
location = / {
return 301 /rebuilder/;
}
location /rebuilder/ {
proxy_pass http://localhost:8080/;
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;
}
}
SSL 인증서 사용시
server {
listen 80;
server_name 도메인.com www.도메인.com;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name 도메인.com www.도메인.com;
ssl_certificate /etc/nginx/ssl/도메인.com.crt;
ssl_certificate_key /etc/nginx/ssl/도메인.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location = / {
return 301 /rebuilder/;
}
location /rebuilder/ {
proxy_pass http://localhost:8080/;
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;
}
}
♣ 설정을 마친 후, - DS923의 nginx 재시작 명령는 특정 되여 있음
ex) nginx -s reload, 이런 명령어는 재시작 않됨 ~
★ DS923, config_error_check와 nginx 재시작
nginx -t
systemctl restart nginx