CentOS (nginx)에서 Docker의 cloud9를 서브 디렉토리에
그런 중 cloud9를 시도해 보려고 DockerHub에서 kdelfour/cloud9-docker를 떨어뜨려 보았습니다만, 보통으로 사용하는 분에는 문제 없을 것 같습니다만 리버스 프록시를 통해
http://hostname:port/subdir/
라고 액세스하면, http://hostname:port/ide.html
되어버려서, 잘 안 되는 것입니다(´・ω・`)그럼
http://hostname:port/subdir/ide.html
로 액세스하면,같은 칩스 표시가 나오고 앞으로 진행되지 않습니다.
「cloud9 subdirectory」로 검색해도 issue는 오르고 있지만 「그것이, 뭔가?」같은 느낌이 되어서 수정을 기대할 수 없는 느낌입니다만, 영어 약자이므로 지금은 잘 모르겠습니다. 코드를 바라보고/ide.html의 부분을/subdir/ide.html과 같이 재작성해 봐도, 지금은 움직임이 변함없이 힘 다했습니다.
그런 가운데 「참조처를 리버스 프록시로 재기록하는 방법이 있어」적인 기입을 보였으므로 시험해 보면 잘 말한 느낌이 들기 때문에, 공유해 보려고 생각합니다.
참고가 된 것은 이쪽.
htps : // 기주 b. 이 m/c9/이것/이스에 s/237
1. nginx에서 sub_folder를 사용할 수 있도록 설정
CentOS의 nginx는 그대로 넣으면 sub_folder를 사용할 수없는 것 같습니다. conf에 쓰면 오류가 발생합니다. 그래서 모듈을 넣어야 합니다만, 어느 넣으면 좋을지 모르기 때문에 전부 팩을 넣었습니다.
sudo yum install nginx-all-modules
과연 전부 들어가면 한발로 움직였습니다.
2. nginx에 구성 추가
http://hostname:3080/ide/ide.html
에서 액세스 한 것을 docker(localhost:8080)로 돌립니다.
proxy_set_header는 평소 세트로 sub_filter를 참조 링크에서 가져왔습니다. 상당히 재기록이 필요했군요.
/etc/nginx/conf.d/ide.confserver{
listen 3080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /ide/ {
proxy_pass http://localhost:8080/;
sub_filter_types txt/html txt/css application/javascript;
sub_filter "/configs" "/ide/configs";
sub_filter '"/static' '"/ide/static'; #note the single and
sub_filter '"/vfs' '"/ide/vfs';
sub_filter '"/_ping' '"/ide/_ping';
sub_filter_once off;
}
}
다시 작성이 끝나면 sudo systemctl reload nginx
하고 활성화하십시오.
3. docker를 시작하여 동작 확인
kdelfour/cloud9-docker가 ☆가 많았기 때문에 사용해 보았습니다. 사용해 본 시점에서는 최종 빌드가 4개월전이므로 거기까지 낡지 않았습니다. 대체로 사용하려고 하고 있던 codebox가 3년전이라든지이므로(´・ω・`)
sudo docker run -it -d -p 8080:80 -v /home/my_user/workspace:/workspace kdelfour/cloud9-docker
일어나면 브라우저에서 액세스해보십시오.
http://hostname:3080/ide/ide.html
ide.html까지 필요합니다. http://hostname:3080/ide/
로 멈추면 http://hostname:3080/ide.html
로 리디렉션되어 잘 움직이지 않습니다.
다음과 같은 이미지가 표시되면 성공입니다.
유저/패스워드는 설정할 수 없는 것 같기 때문에, nginx의 conf의 설정에 특정 IP만 허가라든지 넣어 두면 좋을 것 같네요.
/etc/nginx/conf.d/ide.conf location /ide/ {
# 追加
allow xxx.xxxx.xxx.xxx;
deny all;
}
인증하기
컨테이너의 /etc/supervisor/conf.d/cloud9.conf
안에 시작 명령이 있으므로 명령 끝에
--auth ユーザー名:パスワード
를 붙이면 인증이 들어갑니다.
인증이 필요한 경우는 이미지를 그대로 사용하는 것이 아니라, Dockerfile로 sed당으로 기동 커멘드를 재기록해 사용하면 좋을 것 같습니다.
Reference
이 문제에 관하여(CentOS (nginx)에서 Docker의 cloud9를 서브 디렉토리에), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jp_ibis/items/05febd35a54b71963b41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
sudo yum install nginx-all-modules
http://hostname:3080/ide/ide.html
에서 액세스 한 것을 docker(localhost:8080)로 돌립니다.proxy_set_header는 평소 세트로 sub_filter를 참조 링크에서 가져왔습니다. 상당히 재기록이 필요했군요.
/etc/nginx/conf.d/ide.conf
server{
listen 3080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /ide/ {
proxy_pass http://localhost:8080/;
sub_filter_types txt/html txt/css application/javascript;
sub_filter "/configs" "/ide/configs";
sub_filter '"/static' '"/ide/static'; #note the single and
sub_filter '"/vfs' '"/ide/vfs';
sub_filter '"/_ping' '"/ide/_ping';
sub_filter_once off;
}
}
다시 작성이 끝나면
sudo systemctl reload nginx
하고 활성화하십시오.3. docker를 시작하여 동작 확인
kdelfour/cloud9-docker가 ☆가 많았기 때문에 사용해 보았습니다. 사용해 본 시점에서는 최종 빌드가 4개월전이므로 거기까지 낡지 않았습니다. 대체로 사용하려고 하고 있던 codebox가 3년전이라든지이므로(´・ω・`)
sudo docker run -it -d -p 8080:80 -v /home/my_user/workspace:/workspace kdelfour/cloud9-docker
일어나면 브라우저에서 액세스해보십시오.
http://hostname:3080/ide/ide.html
ide.html까지 필요합니다. http://hostname:3080/ide/
로 멈추면 http://hostname:3080/ide.html
로 리디렉션되어 잘 움직이지 않습니다.
다음과 같은 이미지가 표시되면 성공입니다.
유저/패스워드는 설정할 수 없는 것 같기 때문에, nginx의 conf의 설정에 특정 IP만 허가라든지 넣어 두면 좋을 것 같네요.
/etc/nginx/conf.d/ide.conf location /ide/ {
# 追加
allow xxx.xxxx.xxx.xxx;
deny all;
}
인증하기
컨테이너의 /etc/supervisor/conf.d/cloud9.conf
안에 시작 명령이 있으므로 명령 끝에
--auth ユーザー名:パスワード
를 붙이면 인증이 들어갑니다.
인증이 필요한 경우는 이미지를 그대로 사용하는 것이 아니라, Dockerfile로 sed당으로 기동 커멘드를 재기록해 사용하면 좋을 것 같습니다.
Reference
이 문제에 관하여(CentOS (nginx)에서 Docker의 cloud9를 서브 디렉토리에), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jp_ibis/items/05febd35a54b71963b41
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
sudo docker run -it -d -p 8080:80 -v /home/my_user/workspace:/workspace kdelfour/cloud9-docker
http://hostname:3080/ide/ide.html
location /ide/ {
# 追加
allow xxx.xxxx.xxx.xxx;
deny all;
}
컨테이너의
/etc/supervisor/conf.d/cloud9.conf
안에 시작 명령이 있으므로 명령 끝에--auth ユーザー名:パスワード
를 붙이면 인증이 들어갑니다.
인증이 필요한 경우는 이미지를 그대로 사용하는 것이 아니라, Dockerfile로 sed당으로 기동 커멘드를 재기록해 사용하면 좋을 것 같습니다.
Reference
이 문제에 관하여(CentOS (nginx)에서 Docker의 cloud9를 서브 디렉토리에), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jp_ibis/items/05febd35a54b71963b41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)