sed -i "/listen 443.*server_name $SERVER_NAME;/,/}/s|proxy_pass .*;|proxy_pass $PROXY_PASS;|" /etc/nginx/nginx.conf
时间: 2023-12-22 19:05:19 浏览: 166
你的问题是如何使用sed命令在nginx.conf文件中替换特定的配置行?
在给定的sed命令中,使用了-i选项来直接修改原始文件。接下来,正则表达式"/listen 443.*server_name $SERVER_NAME;/,/}/"用于匹配包含"listen 443"和"server_name $SERVER_NAME;"之间的行。然后,用替换命令"s|proxy_pass .*;|proxy_pass $PROXY_PASS;|"将匹配到的行中的"proxy_pass"配置进行替换。
请注意,这个命令中的$SERVER_NAME和$PROXY_PASS是变量,你需要根据实际情况替换它们。此外,确保有足够的权限来修改nginx.conf文件。
相关问题
用sed写出匹配listen443及serve_name为$SERVER_NAME的代码块把proxy_pass这一行替换掉
你可以使用以下的sed命令来匹配listen 443和server_name为$SERVER_NAME的代码块,并将其中的proxy_pass行替换掉:
```shell
sed -i '/listen 443.*server_name $SERVER_NAME;/,/}/s|^\(\s*proxy_pass\).*|\1 $PROXY_PASS;|' /etc/nginx/nginx.conf
```
这个命令中的正则表达式`/listen 443.*server_name $SERVER_NAME;/,/}/`匹配以listen 443开始,server_name为$SERVER_NAME结束的代码块。然后,替换命令`s|^\(\s*proxy_pass\).*|\1 $PROXY_PASS;|`将匹配到的代码块中以proxy_pass开头的行替换为`proxy_pass $PROXY_PASS;`。
请确保将$SERVER_NAME和$PROXY_PASS替换为实际的变量值,并且有足够的权限来修改nginx.conf文件。
用sed找到server下满足listen是443,serve_name是www.maydot.cn的代码块在location / 下的proxy_pass这一行替换掉
你可以使用以下的sed命令来找到server下满足listen为443和server_name为www.maydot.cn的代码块,并将其中在location / 下的proxy_pass行进行替换:
```shell
sed -i '/server {/,/}/ {/listen 443;/ {/server_name www.maydot.cn;/ {/location \/ {n; s|^\(\s*proxy_pass\).*|\1 replacement_value;}}}}' nginx.conf
```
这个命令中,正则表达式`/server {/,/}/`会匹配到server块,然后在其中进一步匹配到listen为443和server_name为www.maydot.cn的行。接着,正则表达式`/location \/ {n; s|^\(\s*proxy_pass\).*|\1 replacement_value;}`会在满足条件的代码块中找到location / 下的proxy_pass行,并将其替换为你想要的值(在这里是replacement_value)。
请确保将replacement_value替换为实际的值,并且有足够的权限来修改nginx.conf文件。
阅读全文