shanghaipc 发表于 2018-11-10 11:42:49

Linux redhat 7 nginx 优化 配置

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-develphp-fpm(该软件包需要下载,该软件是php的后台处理程序使用9000端口 nginx把客户端请求的php动态页面发送给php-fpm,经过php-fpm处理返回结果给nginx,nginx再将结果返回给客户端)
  

    yum -y install   mariadb   mariadb-server   mariadb-develphp   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_namelocalhost; #指定域名
  charset utf-8; #中文网站一般设置utf-8编码以免出现乱码
  location ~ .php$ {#所有以php结尾的请求转到这个location处理
  root         html;#网站目录
  fastcgi_pass   127.0.0.1:9000;#请求转发给php-fpm处理
  fastcgi_indexindex.php; #默认首页
  #fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name;
  include      fastcgi.conf;#倒入一个配置文件该文件都是提供一些变量参数
  }
  }
  8.重载nginx

  nginx -s>  9.可以写一个php文件测试php是否可以正常解析
  vim /usr/local/nginx/html/test1.php
  
  10.如果配置正确服务启动无报错访问localhost/test1.php会得到一个页面 This is a test Page
  11.启动数据库服务mariadb
  systemctl start mariadb
  12.编写一个数据库测试php页面
  vim /usr/local/nginx/html/test2.php
  
  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_processes4; #进程数和cpu核心数需要保持一致;4核cpu可以启动4个进程
  #error_loglogs/error.log;
  #error_loglogs/error.lognotice;
  #error_loglogs/error.loginfo;
  #pid      logs/nginx.pid;
  events {
  worker_connections65535; #每个进程并发连接数默认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_buffers4 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;
  }


页: [1]
查看完整版本: Linux redhat 7 nginx 优化 配置