CentOS (nginx)에서 Docker의 cloud9를 서브 디렉토리에

5476 단어 nginxcloud9
최근 데스크톱 클라우드화 계획의 일환으로 클라우드 편집기를 시도하고 있습니다. 하지만 VSCode의 편안함에 익숙해지면 좀처럼 편집기를 옮길 수 없네요…

그런 중 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.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당으로 기동 커멘드를 재기록해 사용하면 좋을 것 같습니다.

좋은 웹페이지 즐겨찾기