nginx.conf 파일 내의 단일 행을 다중 행 내용으로 바꾸십시오


0

나는 "/etc/nginx/nginx.conf"파일의 백업을 만들고 싶다.

그런 다음 파일에서 다음 줄을 편집하십시오.

include /etc/nginx/sites-enabled/*;

대신에 나타납니다 ...

include /etc/nginx/sites-enabled/*;

server {
    listen 8081;

    location / {
        proxy_pass http://127.0.0.1:8080/;
        proxy_redirect default;
        auth_basic "Server Administration";
        auth_basic_user_file /etc/nginx/passwords;
    }
}

내 문제는 내가 리눅스에 여전히 아주 익숙하지 않은데, 나는 sed를 사용할 수있을 것이라고 생각했지만, 나의 새로운 이해는 그것이 한 줄씩 읽으므로 여러 줄의 내용에 좋지 않다는 것이다. 나는 캐릭터의 일부가 perl을 방해 할 것이기 때문에 perl 작업을하는 법을 잘 모르고있다. 내 뇌는 NGINX가 어떻게 작동하는지 배우는 것만으로도 튀김이됩니다 .... 어떤 도움도 크게 받으실 수 있습니다.

내 현재 SED 명령 ....

잘 작동해야합니다. 예! :디

sudo sed -i.bak 's/^    include \/etc\/nginx\/sites-enabled\/\*\;$/&\n  \n  server {\n      listen 8081\;\n     \n      location \/ {\n         proxy_pass http:\/\/127.0.0.1:8080\/\;\n            proxy_redirect default\;\n          auth_basic "Server Administration"\;\n          auth_basic_user_file \/etc\/nginx\/passwords\;\n    }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf

대체하고 싶다. 단일 줄 단위로 줄을 긋는다. 조차 sed 할 수있어.
AnFi

Heh, 내가 시험해 본 모든 것은 방금 파산했다. 내가 sed로 할 수 있었던 것은 전체 파일을 두 번째 블록으로 대체하는 것이었다. 나는 아직도 찾고있다. 나는 누군가 다음 몇 시간 동안 파기를 알아낼 수있는 것보다 빨리 대답 할 수있는 비슷한 일을 경험했을지도 모른다. 그것은 제가 이미 라스베리 파이 3에서 서버 역할을하는 프로그램 인 drawpile을 설정하고 있습니다.
Wade S

답변:


0

sed 한 줄을 여러 줄로 변환 할 수 있습니다.
아래의 샘플 "proof of concept"스크립트를 살펴보십시오. 변환 된 "here doc"문서를 출력합니다.

#!/bin/sh
sed 's/^include \/etc\/nginx\/sites-enabled\/\*;$/&\nYES!/' <<END
input-line:1
include /etc/nginx/sites-enabled/*;
input-line:3
include /etc/nginx/sites-enabled/*;
END

나는 그것을 조금 더 조사하고 오류 코드가 없는데도 오류를 제거 할 수 있었다. 하지만 아무 것도하지 않습니다. sudo sed -i.bak -e 's/^\/etc\/nginx\/sites-enabled\/*;$/\/etc\/nginx\/sites-enabled\/*;\n \n server {\n listen 8081;\n \n location \/ {\n proxy_pass http:\/\/127.0.0.1:8080\/;\n proxy_redirect default;\n auth_basic "Server Administration";\n auth_basic_user_file \/etc\/nginx\/passwords;\n }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf
Wade S

필자가 원하는 입력 행을 찾기 위해 샘플 스크립트를 변경했습니다.
AnFi

고마워,하지만 여전히 문제가있어. 세미콜론으로 끝나는 줄이 여러 개 있는데도 그 때문에 실행되지 않습니다. 나는 세미콜론도 탈출 할 수있는 방법이 필요하다.
Wade S

사실 나는 그것을 마침내 이해했다고 생각합니다. 나를 올바른 방향으로 가리켜 주셔서 감사합니다.
Wade S

0

Andrzej A. Flip이 제공 한 정보 외에도 세미콜론 (;), 별표 (*) 및 슬래시 (/) 문자를 이스케이프 처리해야합니다. \ n을 사용하면 .bak 확장자를 사용하여 파일을 백업하기 전에 새로운 줄을 만들고 -i.bak를 사용하여 파일을 백업합니다.

sudo sed -i.bak 's/^    include \/etc\/nginx\/sites-enabled\/\*\;$/&\n  \n  server {\n      listen 8081\;\n     \n      location \/ {\n         proxy_pass http:\/\/127.0.0.1:8080\/\;\n            proxy_redirect default\;\n          auth_basic "Server Administration"\;\n          auth_basic_user_file \/etc\/nginx\/passwords\;\n    }\n}\n/' /home/pi/Public/NGINX-test/nginx.conf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.