首頁 > php教程 > php手册 > 主體

Nginx1.2.0升级笔记

WBOY
發布: 2016-06-06 20:07:23
原創
1064 人瀏覽過

昨天闲的蛋疼吧Nginx升级到了1.2.0,之前用的是1.0.14 1.0.14到1.2.0是一个大版本升级,配置文件有较大变化 写文章记录下碰到的问题以及解决办法 日志格式的定义不能放在每个server里了,必须写在http里 因此直接运行lnmp的升级脚本最后会报错,运行下面的se

昨天闲的蛋疼吧Nginx升级到了1.2.0,之前用的是1.0.14

1.0.14到1.2.0是一个大版本升级,配置文件有较大变化

写文章记录下碰到的问题以及解决办法

日志格式的定义不能放在每个server里了,必须写在http里

因此直接运行lnmp的升级脚本最后会报错,运行下面的sed脚本可以搞定

sed -i '/log_format.*/d;/.*http_user_agent.*/d;/\$status.*/d' /usr/local/nginx/conf/vhost/*.conf
sed -i 's/access_log  \/home\/wwwlogs\/\(.*\)\.log  .*/access_log  \/home\/wwwlogs\/\1\.log  nginx_log/' /usr/local/nginx/conf/vhost/*.conf
sed -i "\$i\log_format  nginx_log  '\$remote_addr - \$remote_user [\$time_local] \"\$request\" '" /usr/local/nginx/conf/nginx.conf 
sed -i "\$i\'\$status \$body_bytes_sent \"\$http_referer\" '" /usr/local/nginx/conf/nginx.conf
sed -i "\$i\'\"\$http_user_agent\" \$http_x_forwarded_for';" /usr/local/nginx/conf/nginx.conf
登入後複製
登入後複製

脚本是删除每个vhost里的日志格式定义,并且把日志格式名改为nginx_log,然后在http里定义一个nginx_log日志格式

运行完上面的命令,你可以重新载入一次nginx就ok了

但是我自己的升级完还出现了一个问题,博客一直显示welcome to nginx

指定路径访问就显示404或者no output

开始怀疑是未指定默认index文件,但是我所有配置都正确的

后来网上看到是1.1后的新功能try_files造成的,因为WP使用了rewrite

需要在php的请求后面加入一个配置,把404的请求转给php处理,配置如下

location ~ .*\.(php|php5)?$
true{
truetruetruetry_files $uri =404;
truetruetruefastcgi_pass  unix:/tmp/php-cgi.sock;
truetruetruefastcgi_index index.php;
truetruetrueinclude fcgi.conf;
true}
登入後複製

重新载入nginx就ok

不过也不是所有的都需要这样,在我vps上共有6个WP,但唯独我自己的博客需要加入这一行,其他不加入也完全正常

其实对于我来说没必要新版本,也没用到什么新功能,所以没事别瞎升级,不然会出现一些稀奇古怪的事情

昨天闲的蛋疼吧Nginx升级到了1.2.0,之前用的是1.0.14

1.0.14到1.2.0是一个大版本升级,配置文件有较大变化

写文章记录下碰到的问题以及解决办法

日志格式的定义不能放在每个server里了,必须写在http里

因此直接运行lnmp的升级脚本最后会报错,运行下面的sed脚本可以搞定

sed -i '/log_format.*/d;/.*http_user_agent.*/d;/\$status.*/d' /usr/local/nginx/conf/vhost/*.conf
sed -i 's/access_log  \/home\/wwwlogs\/\(.*\)\.log  .*/access_log  \/home\/wwwlogs\/\1\.log  nginx_log/' /usr/local/nginx/conf/vhost/*.conf
sed -i "\$i\log_format  nginx_log  '\$remote_addr - \$remote_user [\$time_local] \"\$request\" '" /usr/local/nginx/conf/nginx.conf 
sed -i "\$i\'\$status \$body_bytes_sent \"\$http_referer\" '" /usr/local/nginx/conf/nginx.conf
sed -i "\$i\'\"\$http_user_agent\" \$http_x_forwarded_for';" /usr/local/nginx/conf/nginx.conf
登入後複製
登入後複製

脚本是删除每个vhost里的日志格式定义,并且把日志格式名改为nginx_log,然后在http里定义一个nginx_log日志格式

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!