nginx.conf 파일 내에서 한 줄을 여러 줄 내용으로 바꾸십시오.

nginx.conf 파일 내에서 한 줄을 여러 줄 내용으로 바꾸십시오.

"/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;
    }
}

내 문제는 내가 아직 Linux를 처음 접했고 sed를 사용할 수 있다고 생각했지만 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

답변1

sed한 줄을 여러 줄로 변환할 수 있습니다.
아래의 샘플 "개념 증명" 스크립트를 살펴보세요. 변환된 "여기 문서" 문서를 출력합니다.

#!/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

답변2

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

관련 정보