海运的博客

Nginx官方Centos安装源

发布时间:June 11, 2014 // 分类:Nginx // No Comments

#centos6:
rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
#centos5:
rpm -ivh http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm

或自添加:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

Debian7使用apt-get源安装LNMP

发布时间:December 5, 2013 // 分类:Nginx // No Comments

Debian7官方源添加了php-fpm软件包,现可通过apt-get快速安装部署LNMP环境了。
安装Mysql:

apt-get install -y mysql-server mysql-client

安装PHP:

apt-get install php5-cli php5-fpm php5-mysql php5-curl

安装Nginx:

apt-get install nginx-full

Nginx主配置文件为:

/etc/nginx/nginx.conf

调用虚拟主机配置文件目录:

/etc/nginx/sites-enabled/

修改默认虚拟主机配置文件支持PHP解析:

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #
    #    # With php5-cgi alone:
    #    fastcgi_pass 127.0.0.1:9000;
    #    # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

Nginx下多网站单独php-fpm进程目录权限防跨站

发布时间:March 6, 2013 // 分类:Nginx,PHP,网络安全 // No Comments

Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问。

先了解一下网站正常运行所用到的用户、目录权限:
Nginx进程运行用户:接收用户请求,处理静态文件,如果是PHP则转给PHP-CGI处理,网站目录拥有读权限。
PHP-cgi进程用户:处理PHP文件,网站目录拥有读权限,个别目录需要写入权限。

让每个网站使用单独的PHP-CGI进程,创建PHP-FPM配置文件,修改以下:

<value name="pid_file">/usr/local/php/logs/php-fpm.pid</value>
<value name="error_log">/usr/local/php/logs/php-fpm.log</value>
<value name="listen_address">/tmp/www.haiyun.me.sock</value>
<value name="user">www.onovp.com</value>  #PHP-CGI运行用户组
<value name="group">www.haiyun.me</value>

启动PHP-CGI进程:

/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/www.haiyun.me.conf

设置网站目录权限,设Nginx运行用户为www:

chown -R www.haiyun.me:www /home/wwwroot/www.haiyun.me
chmod -R 550 /home/wwwroot/www.haiyun.me
chmod 701 /home/wwwroot/

再修改Nginx网站配置文件,解析PHP所使用的PHP-CGI进程:

location ~ .*\.(php|php5)?$
{
fastcgi_pass  unix:/tmp/www.haiyun.me.sock;
fastcgi_index index.php;
include fcgi.conf;
}

php-cgi进程简单管理脚本:

#! /bin/sh
# chkconfig: 2345 55 25
#https://www.haiyun.me
cgi=/usr/local/php/bin/php-cgi
case "$1" in
    start)
        for conf in `ls /usr/local/php/etc/*.conf`
        do
            $cgi --fpm --fpm-config $conf
        done
    ;;

    stop)
        for pid in `ls /usr/local/php/logs/*.pid`
        do
                kill -TERM `cat $pid`
        done
    ;;

    restart)
        $0 stop
        $0 start
    ;;


    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
    ;;

esac

Nginx配置StartSSL免费SSL证书

发布时间:August 7, 2012 // 分类:Nginx,OpenSSL // No Comments

证书申请参考:StartSSL免费服务器SSL证书申请,使用自签名证书参考:Nginx配置自签名SSL证书
下载StartSSL根证书并与申请到的StartSSL证书合并到一个文件:

wget http://www.startssl.com/certs/ca.pem
wget http://www.startssl.com/certs/sub.class1.server.ca.pem
cat server.csr sub.class1.server.ca.pem ca.pem > www.haiyun.me.pem

服务器私钥如果有设置密码要清除掉,不然启动Nginx要输入SSL密码。

openssl rsa -in server.key -out www.haiyun.me.key

更改SSL证书权限:

chmod 400 www.haiyun.me.*

修改Nginx配置文件加载SSL证书:

ssl                   on;
ssl_certificate   /path/www.haiyun.me.pem;
ssl_certificate_key /path/www.haiyun.me.key;

修改fcgi配置文件传递HTTPS参数,不然当前网页为HTTPS,下一链接主回到HTTP页面了。

fastcgi_param HTTPS on;

如果网站只允许使用HTTPS连接可添加Header头通知客户端转向HTTPS连接:

add_header Strict-Transport-Security max-age=31536000;

重启Nginx加载:

/etc/init.d/nginx restart

访问www.haiyun.me查看SSL证书:
查看www.haiyun.me证书.png

Nginx与PHP变量传递fastcgi_params

发布时间:July 1, 2012 // 分类:Nginx,PHP // No Comments

Nginx配置Fastcgi解析PHP时会调用fastcgi_params配置文件来传递服务器变量,默认内容如下:

#参数设定       #传递为PHP变量名    #Nginx自有变量,可自定义
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

可以修改配置文件设定自定义变量传递到php-cgi端:

fastcgi_param  haiyun      "Hello haiun";

新建php文件通过$_SERVER[""]变量测试:

<?
echo $_SERVER["haiyun"];
?>
curl www.haiyun.me/test.php
Hello haiyun

13-12-25更新,不推荐使用这种方式传递变量,会增加连接开销,可修改PHP-FPM配置文件传递变量:

env[haiyun] = test
分类
最新文章
最近回复
  • opnfense: 谢谢博主!!!解决问题了!!!我之前一直以为内置的odhcp6就是唯一管理ipv6的方式
  • liyk: 这个方法获取的IPv6大概20分钟之后就会失效,默认路由先消失,然后Global IPV6再消失
  • 海运: 不好意思,没有。
  • zongboa: 您好,請問一下有immortalwrt設定guest Wi-Fi的GUI教學嗎?感謝您。
  • 海运: 恩山有很多。
  • swsend: 大佬可以分享一下固件吗,谢谢。
  • Jimmy: 方法一 nghtp3步骤需要改成如下才能编译成功: git clone https://git...
  • 海运: 地址格式和udpxy一样,udpxy和msd_lite能用这个就能用。
  • 1: 怎么用 编译后的程序在家里路由器内任意一台设备上运行就可以吗?比如笔记本电脑 m参数是笔记本的...
  • 孤狼: ups_status_set: seems that UPS [BK650M2-CH] is ...