使用nginx实现缓存功能

1、先创建好存放缓存的目录mkdir /home/nginx_cache;
2、编辑nginx的配置文件,内容如下:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
proxy_cache_path /home/nginx_cache levels=1:2 keys_zone=mycache:10m max_size=1G;
server {
listen 80;
server_name 站点域名;
location / {
proxy_pass http://后端web服务地址/;
proxy_cache mycache;
proxy_cache_valid 200 206 304 301 302 10d;
proxy_connect_timeout 60s;
proxy_cache_methods GET HEAD;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
部分参数的说明如下:
proxy_cache_path 缓存目录位置,指定为之前创建好的目录;
levels 设置缓存文件目录层次,levels=1:2 表示两级目录,子目录名称有2个字符;
keys_zone 设置缓存名字和共享内存大小;
max_size 磁盘缓存空间的大小;
proxy_pass 反向代理地址;
proxy_cache 缓存名称,就是之前keys_zone设置的名称;
proxy_cache_valid 设置缓存哪些http的状态码请求和缓存时间;
proxy_connect_timeout 后端连接超时时间;
proxy_cache_methods 指定缓存的请求方式;
proxy_set_header 设置请求的http头;
3、重启nginx后,访问站点域名,进入目录/home/nginx_cache下可以查看到已经有生成的缓存文件了。

一些iptables命令

1、查看当前iptables中的规则
iptables -L -n
2、清空iptables中的规则
iptables -F
3、保存当前的iptables规则到备份的规则文件iptables_rules.txt
iptables-save >iptables_rules.txt
4、从备份的规则文件iptables_rules.txt导入iptables规则
iptables-restore
5、设置禁ping
iptables -I INPUT -p icmp -j DROP
6、限制每ip每秒并发访问tcp80端口的连接数为200
iptables -I INPUT -p tcp --dport 80 --syn -m connlimit --connlimit-above 200 -j DROP

源码安装nginx1.5.2+php7.1.20

1、从nginx官网下载源码安装包
wget http://nginx.org/download/nginx-1.15.2.tar.gz
解压tar -zxf nginx-1.15.2.tar.gz
进入源码目录cd cd nginx-1.15.2
编译安装
./configure --prefix=/usr/local/nginx15 --with-http_ssl_module --with-http_realip_module --with-http_dav_module --with-http_sub_module \
--with-stream --with-http_stub_status_module --with-http_mp4_module --with-http_flv_module --with-http_slice_module \
--with-http_auth_request_module
make && make install
编译时指定安装的模块的功能的说明:
http_ssl_module 支持部署ssl证书通过https访问
http_realip_module 获取来访的真实ip,比如用户使用了squid代理访问,则可以记录后端访问ip
http_dav_module 支持webdav
http_sub_module 支持字符串替换
stream模块 支持tcp/udp端口转发
http_stub_status_module 监控nignx状态
http_mp4_module http_flv_module支持mp4/flv的流媒体播放
http_slice_module 支持分片传输
http_auth_request_module 支持后端验证
如果不需要某些模块,可以在编译的时候不添加对应的编译参数;
安装好后,从网上搜索下载一个nginx的脚本存放在/etc/init.d/下 ,将脚本文件命名为nginx
然后执行/etc.init.d/nginx start启动nginx
访问80端口提示“Welcome to nginx!”,说明nginx已经启动成功
2、从php官网下载php7.1的源码安装包
wget https://secure.php.net/distributions/php-7.1.20.tar.gz
解压tar -zxf php-7.1.20.tar.gz
进入目录cd php-7.1.20
编译安装./configure --prefix=/usr/local/php71 --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --enable-pdo --enable-fpm
这里需要指定参数--enable-fpm将php编译为fastcgi模式
make && make install
安装好后,拷贝配置文件到安装目录
cp ./sapi/fpm/php-fpm.conf /usr/local/php71/etc/php-fpm.conf
拷贝源码包中自带的启动脚本文件到/etc/init.d/
cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
进入服务器目录cd /etc/init.d
给脚本添加执行权限chmod +x php-fpm
进入配置文件目录cd /usr/local/php71/etc/php-fpm.d/
将默认的配置文件示例文件www.conf.default重命名为www.conf
service php-fpm start
使用ps aux命令查询已经有php-fpm进程说明已经启动成功
3、配置站点
1)创建站点目录和对应用户
站点site1的目录
mkdir /home/site1
站点site1的用户;
groupadd site1
useradd -s /sbin/nologin -g site1 -M site1
将站点site1所以在目录的所有者用户和组修改为site1
chown site1:site1 /home/site1
类似此方式创建site2的目录/home/site2和用户site2

2)、创建一个用户www用于运行nginx
修改nginx主配置文件为以下内容
user www;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
include vhost/*.conf;
}
在/usr/local/nginx15/conf/ 下新建一个vhost目录
在nginx的配置文件目录vhost下新建2个站点配置文件site1.conf和site2.conf,
site1.conf内容如下
server {
listen 80;
server_name 站点1的域名;
root /home/site1; #站点1的根目录
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/site1.sock; #站点1的读取的sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

}
site2.conf的内容如下
server {
listen 80;
server_name 站点2的域名;
root /home/site2; #站点2的根目录
location / {
index index.php index.html index.htm;
}
location ~ \.php$ {
fastcgi_pass unix:/tmp/site2.sock; #站点2的读取的sock
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

}
3)配置php-fpm
进入目录/usr/local/php71/etc/php-fpm.d/ 复制站点配置文件www.conf为site1.conf和site2.conf
site1.conf的内容如下
[site1]
user = site1
group = site1
listen = /tmp/site1.sock
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
site2.conf的内容如下
[site2]
user = site2
group = site2
listen = /tmp/site2.sock
listen.mode = 0666
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
4)执行命令service php-fpm restart重启php-fpm,
使用命令ps aux | grep php-fpm可以看到已经有2组不同用户的php-fpm进程启动了
然后重启nginx,上传php程序文件到对应站点根目录,访问对应站点在执行php时已经是使用的独立的程序池了