次の仮想ホストを含むhttpd.confファイルがあります。
<VirtualHost *:443>
JkMount /soncn/* tomcat3
SSLProtocol -all +TLSv1
SSLCipherSuite RSA:!LOW:!EXP:!eNULL:!aNULL:!RC4
SSLEngine on
SSLCertificateFile bla
SSLCertificateKeyFile bla
RewriteEngine On
RewriteOptions Inherit
ServerName dionisos
</VirtualHost>
SSLSessionCache dbm:/opt/apache/logs/ssl_gcache_data
<VirtualHost *:8443>
SSLProtocol -all +TLSv1
SSLCipherSuite RSA:!LOW:!EXP:!eNULL:!aNULL:!RC4
SSLEngine on
SSLCertificateFile bla
SSLCertificateKeyFile bla
RewriteEngine On
RewriteOptions Inherit
ServerName dionisos
ProxyRequests Off
ProxyPreserveHost On
PerlModule CSA_Filter
<Proxy *>
Require all granted
</Proxy>
ProxyPass / ajp://162.237.187.150:8012/
ProxyPassReverse / ajp://162.237.185.150:8012/
ProxyTimeout 3600
</VirtualHost>
<VirtualHost *:8191>
SSLProtocol -all +TLSv1
SSLCipherSuite RSA:!LOW:!EXP:!eNULL:!aNULL:!RC4
SSLEngine on
SSLCertificateFile bla
SSLCertificateKeyFile bla
RewriteEngine On
RewriteOptions Inherit
ServerName dionisos
ProxyRequests Off
ProxyPreserveHost On
PerlModule CSA_Filter
<Proxy *>
Require all granted
</Proxy>
ProxyPass / ajp://bla:8010/
ProxyPassReverse / ajp://bla:8010/
ProxyTimeout 3600
</VirtualHost>
VirtualHost *:443に次の行を挿入したいと思います。
<Proxy *>
Require all granted
</Proxy>
ProxyPass /App https://servername:8080/App/
ProxyPassReverse /App https://servername:8080/App/
たくさん試しましたが、適切なsedが見つかりませんでした。
cat httpd.conf|tr '\n' '^'|sed 's#\(<VirtualHost \*:443>.*ServerName dionisos\)#\1 \n<Proxy *>\nRequire all granted\n</Proxy>\nProxyPass /App https://servername:8080/App/\nProxyPassReverse /Wibox https://servername:8080/App/ \n#g'|tr '^' '\n' > httpd.conf.updated
答え1
GNU sedとGNU bashの使用:
ファイル(insert.txt)に新しい行を追加します。
sed '/^<VirtualHost \*:443>/r insert.txt' httpd.conf
または標準入力を使用してください。
echo -e 'lines\nto\ninsert' | sed '/^<VirtualHost \*:443>/r /dev/stdin' httpd.conf
httpd.confを「所定の位置に」編集するには、sedのoptionsを使用します-i
。