замените слушающие порты nginx, используя sed - PullRequest
0 голосов
/ 31 октября 2019

имя файла nginx.conf

как я могу заменить nginx все прослушиваемые порты, используя sed

    limit_req_zone $binary_remote_addr zone=one:30m rate=20r/s;
server {
    listen 80;listen 8080;listen 443 ssl;ssl_certificate server.crt;ssl_certificate_key server.key; ssl_protocols SSLv3 TLSv1.1 TLSv1.2;
    index index.php index.html index.htm;

я хочу заменить эту часть:

listen 80;listen 8080;listen 443 ssl;

нановое значение, новое значение вводится пользователем

пример - пользователь может ввести это:

listen 8181;listen 8083 ssl;

или

listen 80;listen 8080;listen 8181;listen 9090;listen 443 ssl;

Примечание: пользователь может использовать любойзначения.

в настоящее время я использую эту команду, но заменяет только одно значение:

sed -i '0,/listen [0-9]*;/s//listen $NEW_PORT;/' nginx.conf

любая помощь приветствуется

спасибо

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

попробуйте эту работу для меня

sed  -i 's/listen 80;listen 8080;listen 443 ssl;/listen 80;listen 8080;listen 8181;listen 9090;listen 443 ssl;/g' nginx.conf
0 голосов
/ 08 ноября 2019

я сделал это так и работает нормально:

sed -i 's/listen.*ssl; *ssl_certificate/listen 80;listen 6666;listen 8888;listen 443 ssl;ssl_certificate/' nginx.conf

я заменил все строки между: listen.*ssl; *ssl_certificate

я добавил * между ssl; *ssl_certificate, чтобы игнорировать пробелы, если они присутствуют

...