nginx基本配置

nginx (engine x) 是一款由俄罗斯人开发的一款开源的web服务器软件,nginx可以作web服务器支持html和php,nginx还可以做反向代理、负载均衡
nginx 采用源码包安装 nginx-1.8.1.tar.gz
1.先用yum安装依赖包
yum - y install gcc pcre-devel openssl-devel zlib-devel make
2.创建一个禁止登陆的用户nginx,用来作为启动niginx的用户,防止由于软件漏洞给系统造成更大的损失。
useradd -s /sbin/nologin nginx
3.解压tar包、配置安装信息、编译、安装

    tar -xf nginx-1.8.1.tar.gz
    cd nginx-1.8.1
    ./configure --prefix=/usr/local/nginx --user=nginx  --group=nginx --with-http_ssl_module #prefix指定安装路径 --with-http_ssl_module是支持https安全网站的模块如果不需要可以不用安装
    make&&make install

4.做一个软链接到nginx的启动程序,方便以后管理nginx
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
5.启动/关闭nginx
启动 :nginx #请注意重复启动会报错 80 端口被占用会报错 重启需要先关闭再启动没有restart
关闭 :nginx -s stop
在大多修改配置文件的情况下,不用重启nginx,使用重载命令可以在正常提供服务的情况下动态加载新的配置文件
6.nginx 作web服务器
一般选择 LNMP(Linux Nginx Mariadb Php)环境搭建动态网站
需要安装的软件包有 php php-mysql mariadb(数据库客户端软件) mariabd-server mariadb-devel php-fpm(该软件包需要下载,该软件是php的后台处理程序使用9000端口 nginx把客户端请求的php动态页面发送给php-fpm,经过php-fpm处理返回结果给nginx,nginx再将结果返回给客户端)

    yum -y install   mariadb   mariadb-server   mariadb-devel  php   php-mysql
    rpm -hiv php-fpm-5.4.16-36.el7_1.x86_64.rpm
   systemctl start php-fpm #启动php-fpm
   systemctl status php-fpm  #查看php-fpm的运行状态
   systemctl enable php-fpm #设置php-fpm开机自启

7.修改nginx的配置文件
nginx的配置文件格式是
http{
server{ #定义虚拟机一个server是一个虚拟机
location{ #网站目录 默认是nginx安装目录下的html目录下
}
}
}
vim /usr/local/nginx/conf/nginx.conf
//只对配置文件作部分截取
server {
listen 80; #监听80端口默认http的服务端口
server_name localhost; #指定域名
charset utf-8; #中文网站一般设置utf-8编码以免出现乱码
location ~ .php$ {#所有以php结尾的请求转到这个location处理
root html;#网站目录
fastcgi_pass 127.0.0.1:9000;#请求转发给php-fpm处理
fastcgi_index index.php; #默认首页
#fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;#倒入一个配置文件该文件都是提供一些变量参数
}
}
8.重载nginx
nginx -s reload
9.可以写一个php文件测试php是否可以正常解析
vim /usr/local/nginx/html/test1.php
$i="This is a test Page";
echo $i;
?>
10.如果配置正确服务启动无报错访问localhost/test1.php会得到一个页面 This is a test Page
11.启动数据库服务mariadb
systemctl start mariadb
12.编写一个数据库测试php页面
vim /usr/local/nginx/html/test2.php
$links=mysql_connect("localhost","root","密码");
//注意:root为mysql账户名称,密码需要修改为实际mysql密码,无密码则留空即可
if($links){
echo "link db ok!!!";
}
else{
echo "link db no!!!";
}
?>
13.访问localhost/test2.php 会显示link db ok!!!


nginx优化

1.地址重写
将访问a.html转到 b.html
在localtion中加入
rewrite /a.html /b.html;
将所有访问转到其他域名
在localtion之前server中加入
rewrite ^/ http://www.tmooc.cn/;
将所有访问转到其他域名保持访问的子目录不变
在localtion之前server中加入(使用正则在此正则和shell中正则有些不同\1使用$1)
rewrite ^/(.*) http://www.tmooc.cn/$1;
2.高并发
nginx默认启动一个进程,1024个并发
worker_processes 4; #进程数和cpu核心数需要保持一致;4核cpu可以启动4个进程

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 65535; #每个进程并发连接数默认1024 因为linux系统一个用户默认最多只能打开1024个文件;所以改好nginx的并发数后还需要更改linux系统默认能打开文件的个数
}
修改linux系统设置所有用户软件 硬件打开文件最到数为100000实际上用不到那么大
vim /etc/security/limits.conf
#
#

  • soft nofile 100000 #
  • hard nofile 100000

3.客户端缓存
一般缓存都时缓存静态内容如html css xml jpg png 等等
在server 里再加一个location匹配静态文件格式 定义客户端缓存
location ~* .(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 30d; //定义客户端缓存时间为30天
}
4.启用压缩传输,当下所有的浏览器都支持解压,我门开启nginx服务器压缩会减小传输内容的大小;但是要注意一般不要压缩多媒体文件如歌曲;视频;图片;以及过小的文件;因为压缩过程中会在文件中加入压缩信息太小的文件在压缩后反而会更大,多媒体文件本身就是压缩文件再压缩也时给他们再加一层包装除了变大外还要消耗大量服务器资源
http {
server_tokens off; //不显示nginx版本号信息 防止***使用版本漏洞发起***
client_header_buffer_size 1k; //默认请求包头信息的缓存 当访问地址过长1k缓存不够时会报错,客户体验不够好
large_client_header_buffers 4 4k; //将这种超过1k的大请求包头部信息的缓存个数与容量调整为4个4k 合集16k 正常情况下的请求都不会超过这个大小了
gzip on; //启用gzip压缩
gzip_min_length 1000; //小于1000字节的文件不压缩
gzip_comp_level 4; //设在压缩级别压缩级别为1-9 压缩级别越高压缩消耗资源越大 ,一般取4-5级别折中比较合适
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;//启用压缩的文件类型 具体格式参数参照 /usr/local/nginx/conf/mime.types文件
......
}
5.自定义错误页面提高体验度
error_page 404 /404.html; //自定义错误页面到网站根目录下的一个404页面代替默认的404错误
location = /404.html {
root html;
}