nginx | nginx安装及常用配置详解

img

Nginx(“engine x”)是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

在高连接并发的情况下,Nginx是Apache服务器不错的替代品。


Nginx 安装

系统平台:CentOS release 6.6 (Final) 64位。

一、安装编译工具及库文件

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

二、首先要安装 PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。

1、下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

[root@bogon src]# cd /usr/local/src/
[root@bogon src]# wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

img

2、解压安装包:

[root@bogon src]# tar zxvf pcre-8.35.tar.gz

3、进入安装包目录

[root@bogon src]# cd pcre-8.35

4、编译安装

[root@bogon pcre-8.35]# ./configure
[root@bogon pcre-8.35]# make && make install

5、查看pcre版本

[root@bogon pcre-8.35]# pcre-config --version

img

安装 Nginx

1、下载 Nginx,下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz

[root@bogon src]# cd /usr/local/src/
[root@bogon src]# wget http://nginx.org/download/nginx-1.6.2.tar.gz

img 2、解压安装包

[root@bogon src]# tar zxvf nginx-1.6.2.tar.gz

3、进入安装包目录

[root@bogon src]# cd nginx-1.6.2

4、编译安装

[root@bogon nginx-1.6.2]# ./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
[root@bogon nginx-1.6.2]# make
[root@bogon nginx-1.6.2]# make install

5、查看nginx版本

[root@bogon nginx-1.6.2]# /usr/local/webserver/nginx/sbin/nginx -v

img

到此,nginx安装完成。


Nginx 配置

创建 Nginx 运行使用的用户 www:

[root@bogon conf]# /usr/sbin/groupadd www 
[root@bogon conf]# /usr/sbin/useradd -g www www

配置nginx.conf ,将/usr/local/webserver/nginx/conf/nginx.conf替换为以下内容

[root@bogon conf]#  cat /usr/local/webserver/nginx/conf/nginx.conf

user www www;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
  use epoll;
  worker_connections 65535;
}
http
{
  include mime.types;
  default_type application/octet-stream;
  log_format main  '$remote_addr - $remote_user [$time_local] "$request" '
               '$status $body_bytes_sent "$http_referer" '
               '"$http_user_agent" $http_x_forwarded_for';
  
#charset gb2312;
     
  server_names_hash_bucket_size 128;
  client_header_buffer_size 32k;
  large_client_header_buffers 4 32k;
  client_max_body_size 8m;
     
  sendfile on;
  tcp_nopush on;
  keepalive_timeout 60;
  tcp_nodelay on;
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  fastcgi_buffer_size 64k;
  fastcgi_buffers 4 64k;
  fastcgi_busy_buffers_size 128k;
  fastcgi_temp_file_write_size 128k;
  gzip on; 
  gzip_min_length 1k;
  gzip_buffers 4 16k;
  gzip_http_version 1.0;
  gzip_comp_level 2;
  gzip_types text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
 
  #limit_zone crawler $binary_remote_addr 10m;
 #下面是server虚拟主机的配置
 server
  {
    listen 80;#监听端口
    server_name localhost;#域名
    index index.html index.htm index.php;
    root /usr/local/webserver/nginx/html;#站点目录
      location ~ .*\.(php|php5)?$
    {
      #fastcgi_pass unix:/tmp/php-cgi.sock;
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
    {
      expires 30d;
  # access_log off;
    }
    location ~ .*\.(js|css)?$
    {
      expires 15d;
   # access_log off;
    }
    access_log off;
  }

}

检查配置文件nginx.conf的正确性命令:

[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx -t

img


启动 Nginx

Nginx 启动命令如下:

[root@bogon conf]# /usr/local/webserver/nginx/sbin/nginx

img


访问站点

从浏览器访问我们配置的站点ip:

img


Nginx 其他命令

以下包含了 Nginx 常用的几个命令:

/usr/local/webserver/nginx/sbin/nginx -s reload            # 重新载入配置文件
/usr/local/webserver/nginx/sbin/nginx -s reopen            # 重启 Nginx
/usr/local/webserver/nginx/sbin/nginx -s stop              # 停止 Nginx

nginx安装其他参考

1.安装pcre依赖

yum -y install pcre*

2.安装openssl依赖

`yum -y install openssl*`

以上两个都安装玩之后,接下来开始正式安装了

3.在根目录创建一个nginx目录

在根目录也就是root这个目录创建了一个nginx文件,这里面都存放我们安装的nginx

mkdir nginx

img

4.安装nginx服务

wget http://nginx.org/download/nginx-1.14.2.tar.gz 这个是一个压缩文件

5.解压nginx安装包

tar -zxvf nginx-1.14.2.tar.gz

.6.进入解压的目录 cd nginx-1.14.2.tar.gz

./configure    执行文件,检查配置文件是否生效

7.编译

make -j4

8.安装依赖

make install

9.进入/usr/bin/的目录下

`ln -s /usr/local/nginx/sbin/nginx nginx ``//相当于一个快捷方式`

img

9.9返回主界面

直接输入cd就可以返回主界面 通过输入pwd可以查看到返回的是不是主界面

img

10启动nginx

直接输入  nginx就可以启动

通过输入ps -ef|grep nginx可以看到进程

img

在浏览器地址栏输入自己服务器的ip地址就可以看到下面的界面了

img

如果启动遇到nginx: [emerg] getpwnam(“nginx”) failed这个错误。少了用户配置

 useradd -s /sbin/nologin -M nginx

 id nginx

netstat -tlunp | grep nginx启动命令

或者在过程中出现 [emerg] mkdir() “/var/temp/nginx/client” failed (2: No such file or directory) 错误 执行

sudo mkdir -p /var/tem/nginx/client 这个sudo我不要加,应为我的就是root权限了,如果不是的需要加 

9.nginx服务器自定义访问配置

先在我们的根目录通过 下面命令访问我们的主配置文件

`vim /usr/local/nginx/conf/nginx.conf`

img 第一行修改成这样

然后在最下面中添加 include /root/nginx/*.conf,等会在nginx目录中创建一个nginx目录

img

修改完之后,保存退出

按住shift + :  输入:wq!是保存突出

按 i 这个键是先升级编辑
按ecs是退出编辑

9.1返回根目录中,先进入nginx这个目录,在目录创建一个

`mkdir nginx.conf 文件`

通过命令img进入这个里面进行编辑

server_name 是写入自己的服务器上的ip地址或者localhost,写完之后保存退出;

root /root/nginx/upload这个是监听到nginx下面的upload目录里面的index.html文件,等会会在nginx目录创建一个upload目录

img

9.2这样的话,我们监听的端口号就是8080了,但是和主文件的监听的端口号一样了,所以需要再次修改主文件的端口号,把他改成其他的端口号就行了

img

然后再次保存退出,

9.3检查nginx配置是否成功

nginx -t  //出现下面的情况就算配置正确了; 

img

9.4在nginx目录中创建upload目录,等会就会写一个hindextml文件

img

9.5在upload目录中,输入

`vim index.html 创建了一个index.html文件,`

img

里面写一些内容,然后保存退出

最后配置完之后重启一下nginx服务器

`nginx -s reload   `

如果重启过程中遇到下面的问题

nginx: [error] invalid PID number “” in “/usr/local/var/run/nginx/nginx.pid” pid位置不对

pkill  nginx  先杀死,然后在次重启一下就好了

然后在我们浏览器访问服务器的ip地址就可以看到我们写入的内容了;

如果我们访问的ip地址访问的时候,用于都是nginx欢迎页面,说明我门配置的时候没有配置好对应的nginx.conf文件,可以通过nginx -t查看到nginx所配置的环境是在那个目录里面

img

然后在住目录,通过 vim /etc/nginx/nginx.conf进入再次编辑一下,保存就可以了。

开启GZIP

Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能! Web网站上的图片,视频等其它多媒体文件以及大文件,因为压缩效果不好,所以对于图片没有必要支压缩,如果想要优化,可以图片的生命周期设置长一点,让客户端来缓存。 开启Gzip功能后,Nginx服务器会根据配置的策略对发送的内容, 如css、js、xml、html等静态资源进行压缩, 使得这些内容大小减少,在用户接收到返回内容之前对其进行处理,以压缩后的数据展现给客户。这样不仅可以节约大量的出口带宽,提高传输效率,还能提升用户快的感知体验, 一举两得; 尽管会消耗一定的cpu资源,但是为了给用户更好的体验还是值得的。

经过Gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。Gzip 的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的巨大多数浏览器 都支持解析Gzip过的页面。

Gzip压缩作用

将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度。Gzip压缩可以配置http,server和location模块下。Nginx开启Gzip压缩参数说明:

`gzip` `on;         ``#决定是否开启gzip模块,on表示开启,off表示关闭;``gzip_min_length 1k;   ``#设置允许压缩的页面最小字节(从header头的Content-Length中获取) ,当返回内容大于此值时才会使用gzip进行压缩,以K为单位,当值为0时,所有页面都进行压缩。建议大于1k``gzip_buffers 4 16k;   ``#设置gzip申请内存的大小,其作用是按块大小的倍数申请内存空间,param2:int(k) 后面单位是k。这里设置以16k为单位,按照原始数据大小以16k为单位的4倍申请内存``gzip_http_version 1.1;  ``#识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码``gzip_comp_level 2;    ``#设置gzip压缩等级,等级越底压缩速度越快文件压缩比越小,反之速度越慢文件压缩比越大;等级1-9,最小的压缩最快 但是消耗cpu``gzip_types text``/plain` `application``/x-javascript` `text``/css` `application``/xml``;  ``#设置需要压缩的MIME类型,非设置值不进行压缩,即匹配压缩类型``gzip_vary on;      ``#启用应答头"Vary: Accept-Encoding"` `gzip_proxied off;``nginx做为反向代理时启用,off(关闭所有代理结果的数据的压缩),expired(启用压缩,如果header头中包括``"Expires"``头信息),no-cache(启用压缩,header头中包含``"Cache-Control:no-cache"``),``no-store(启用压缩,header头中包含``"Cache-Control:no-store"``),private(启用压缩,header头中包含``"Cache-Control:private"``),no_last_modefied(启用压缩,header头中不包含`` ``"Last-Modified"``),no_etag(启用压缩,如果header头中不包含``"Etag"``头信息),auth(启用压缩,如果header头中包含``"Authorization"``头信息)` `gzip_disable msie6;``(IE5.5和IE6 SP1使用msie6参数来禁止``gzip``压缩 )指定哪些不需要``gzip``压缩的浏览器(将和User-Agents进行匹配),依赖于PCRE库` `######################################################################################################``#如下:修改nginx配置文件 /usr/local/nginx/conf/nginx.conf``[root@localhost ~]``# vim /usr/local/nginx/conf/nginx.conf    #将以下配置放到nginx.conf的http{ ... }区域中` `#修改配置为``gzip` `on;           ``#开启gzip压缩功能``gzip_min_length 10k;     ``#设置允许压缩的页面最小字节数; 这里表示如果文件小于10个字节,就不用压缩,因为没有意义,本来就很小. ``gzip_buffers 4 16k;     ``#设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存``gzip_http_version 1.1;    ``#压缩版本``gzip_comp_level 2;      ``#设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6``gzip` `types text``/css` `text``/xml` `application``/javascript``;   ``#制定压缩的类型,线上配置时尽可能配置多的压缩类型!``gzip_disable ``"MSIE [1-6]\."``;    ``#配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)``gzip` `vary on;  ``#选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩`

如下是线上常使用的

Gzip压缩配置

`[root@external-lb02 ~]``# cat /data/nginx/conf/nginx.conf``........``http {``.......``  ``gzip` `on;``  ``gzip_min_length 1k;``  ``gzip_buffers   4 16k;``  ``gzip_http_version 1.1;``  ``gzip_comp_level 9;``  ``gzip_types    text``/plain` `application``/x-javascript` `text``/css` `application``/xml` `text``/javascript` `application``/x-httpd-php` `application``/javascript` `application``/json``;``  ``gzip_disable ``"MSIE [1-6]\."``;``  ``gzip_vary on;` `}`

如果不开启Gzip压缩功能(即注释掉Gzip的相关配置), 查看某个图片大小

`[root@external-lb02 ~]``# ll -h /data/web//www/test.bmp ``-rw-r--r-- 1 root root 453K 3月 14 18:43 ``/data/web//www/test``.bmp`

如下可知, 文件没有被压缩,文件传输大小还是400多K

img

如果开启Nginx的Gzip压缩功能(即打开Gzip的相关配置), 然后再次访问test.bmp图片, 发现压缩后的该图片文件传输大小只有200多K !

img

通过上面测试对比, 发现Nginx开启Gzip压缩功能后, 定义的gzip type的文件在传输时的大小明显变小, 这样这会大大提高nginx访问性能.

直接用curl测试命令:

`[root@fvtlb02 ~]``# curl -I -H "Accept-Encoding: gzip, deflate" "http://fvtvfc-web.kevin.com/service-worker.js"``HTTP``/1``.1 200 OK``Server: nginx``/1``.12.2``Date: Mon, 26 Nov 2018 02:19:16 GMT``Content-Type: application``/javascript``; charset=utf-8``Connection: keep-alive``Vary: Accept-Encoding``Last-Modified: Sun, 25 Nov 2018 22:28:15 GMT``Vary: Accept-Encoding``ETag: W/``"5bfb21ff-40be"``Content-Encoding: ``gzip` `如上,response header头信息中出现``"Conten_Encoding: gzip"` `, 就说明Nginx已开启了压缩 (在浏览器访问, 通过F12看请求的响应头部 也是一样)`

Nginx的Gzip压缩功能虽然好用,但是下面两类文件资源不太建议启用此压缩功能。
1) 图片类型资源 (还有视频文件)
原因:图片如jpg、png文件本身就会有压缩,所以就算开启gzip后,压缩前和压缩后大小没有多大区别,所以开启了反而会白白的浪费资源。(可以试试将一张jpg图片压缩为zip,观察大小并没有多大的变化。虽然zip和gzip算法不一样,但是可以看出压缩图片的价值并不大)

2) 大文件资源
原因:会消耗大量的cpu资源,且不一定有明显的效果。

参考文档:
1.https://www.runoob.com/linux/nginx-install-setup.html
2.https://www.cnblogs.com/kevingrace/p/10018914.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值