乐趣区

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

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

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….

[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

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

安装 Nginx

1、下载 Nginx,下载地址:http://nginx.org/download/ngi…

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

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

到此,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


启动 Nginx

Nginx 启动命令如下:

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


访问站点

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


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

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 ``// 相当于一个快捷方式 `

9.9 返回主界面

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

10 启动 nginx

直接输入  nginx 就可以启动

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

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

如果启动遇到 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`

第一行修改成这样

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

修改完之后,保存退出

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

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

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

`mkdir nginx.conf 文件 `

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

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

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

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

然后再次保存退出,

9.3 检查 nginx 配置是否成功

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

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

9.5 在 upload 目录中,输入

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

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

最后配置完之后重启一下 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 所配置的环境是在那个目录里面

然后在住目录,通过 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

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

通过上面测试对比, 发现 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/…
2.https://www.cnblogs.com/kevin…

退出移动版