系列文章
Nginx的配置(进阶):
安装
yum源安装
$ yum install nginx
源码安装
咕咕咕
操作
清除缓存
$ mv /var/log/nginx/access.log /var/log/nginx/20180816.log$ kill -USER1 Nginx主进程号 # 让Nginx重新生成一个新的日志文件access.log
配置php
增加 EPEL 和 Remi 仓库
EPEL 指的是 Extra Packages for Enterprise Linux,由 Fedora 社区维护,专门给 RHEL 系的操作系统使用,并且相对于 CentOS 默认的仓库,更新比较快。
Remi 是基于 EPEL 的针对 PHP 打包的仓库,更新也很及时。$ yum install epel-release
如果VPS商家的系统是精简的:
$ yum install http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
安装Remi仓房:
$ yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
接着更新一下系统并且安装一些必要的软件:
$ yum update$ yum install curl vim wget sudo unzip yum-utils
安装php 7.0.x
指定 PHP 包的版本
$ yum-config-manager --enable remi-php70$ yum update
安装一些基本的PHP包:
$ yum install php-fpm php-mysql php-curl php-gd php-mbstring php-mcrypt php-xml php-xmlrpc php-zip
修改一下/etc/php.ini
$ sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php.ini
编辑Nginx的配置文件
$ vim /etc/nginx/nginx.confserver { listen 80 default_server; listen [::]:80 default_server; server_name _; root /usr/share/nginx/html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } [*] 在此处添加即可 # 开启PHP-fpm 模式 location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
重启php和nginx
$ systemctl restart php-fpm $ systemctl restart nginx
参考链接:
配置文件相关
location匹配
~ #波浪线表示执行一个正则匹配,区分大小写~* #表示执行一个正则匹配,不区分大小写^~ #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录= #进行普通字符精确匹配@ #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files
例如:
location / { index index.php index.html; error_page 404 =200 /404.html; }
基于IP的访问控制
查看配置文件,确保包括了default.d
目录下的配置文件
http {... include /etc/nginx/default.d/*.conf;...}
灵活配置,可以针对不同server
做不同的访问控制。
default.d
目录下创建访问控制列表。假如这里要添加黑名单,那就创建black.conf
: $ cat black.confdeny 123.151.43.110;
deny
表示禁止,支持通配符和正则。
自动列目录配置
location / { autoindex on;}
开启gzip压缩
$ vim /etc/nginx/nginx.confhttp { gzip on; # 开启Gzip gzip_min_length 1k; # 不压缩临界值,大于1K的才压缩 gzip_buffers 4 16k; #gzip_http_version 1.1; gzip_comp_level 2; # 压缩级别,1-10,数字越大压缩的越好,时间也越长 gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 压缩文件类型 #gzip_vary on; # 跟Squid等缓存服务有关 gzip_disable "MSIE [1-6]\."; # 不压缩IE6 ...}
缓存设置
...proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;server { set $upstream http://ip:port location / { proxy_cache my_cache; proxy_pass $upstream; }}...
Alias配置
$ vim /etc/nginx/nginx.conf... location /htdocs { alias /opt/www/alias; index index.html; }...
alias
只会匹配最右侧的路径。
http://www.brownfly.cn/htdocs/index.html
,那么匹配的则是/opt/www/alias/index.html
,而不是/opt/www/alias/htdocs/index.html
。 防盗链
基于http_refer防盗链配置模块:
$ vim /etc/nginx/nginx.conf... location ~* .*\.(git|png|jpg|jpeg|swf|fle)$ { valid_referers none blocke 127.0.0.1 *.baidu; # 允许文件链出的域名白名单 if ($invalid_referer){ #rewrite ^/ http://118.25.89.91/404.html; # 盗链返回结果 return 403; }
基于用户的访问控制
身份验证可用于一些私密目录。
生成密码账户文件
$ yum install -y httpd-tools$ cd /etc/nginx/conf.d$ htpasswd -c -m .htpasswd http1 # 创建http1用户输入密码$ htpasswd -m .htpasswd http2 # 创建http2用户输入密码
修改配置文件
$ vim /etc/nginx/nginx.conflocation /secret { auth_basic "test site"; auth_basic_user_file /etc/nginx/conf.d/.htpasswd;}