Nginx安装和简介

Nginx是一个开源、高性能、可靠的HTTP中间件和代理服务。不仅如此,对于我们开发人员来说,Nginx更是一个趁手的工具。至于缺点,似乎和很多Linux平台下的软件一样,就是配置文件的语法极为难用(这里不得不吐槽一下国内的各种博客上有关Nginx的内容,大部分都是直接扔出一坨配置,没有任何详细说明,代码乱七八糟堆在一起也不格式化,看得人一头雾水)。

Nginx的同类产品有:Microsoft IIS,Apache httpd,Google GWS等。和同类产品相比,Nginx主要有以下优点:

  1. 基于BSD协议开源
  2. 轻量级,模块化的设计
  3. 通过epoll实现了IO多路复用,性能较高
  4. CPU亲和,能够充分利用多核CPU,worker进程和CPU核心绑定
  5. 使用sendfile机制,处理静态文件不通过用户态而直接使用内核态,性能较高

Nginx安装

这里我们使用的是Ubuntu Server 16.04操作系统。

安装apt源中的Nginx预编译包:

apt-get install nginx

安装完成后,我们可以通过systemctl命令对Nginx服务进行管理。

我们可以用浏览器访问服务器的80端口,可以看到Nginx启动成功后,显示的默认网页:

关于目录结构的说明

在Ubuntu下:

  • 配置文件目录:/etc/nginx
  • 日志目录:/var/log/nginx

我们主要关注配置文件的目录:

  • nginx.conf:主配置文件
  • conf.d:为了方便管理,我们可以将配置文件分开存放,这里存放子配置文件
  • sites-available:存放的也是子配置文件,但是这里专门存放对应一个站点的配置,其中通常以域名作为文件名
  • sites-enabled:里面的文件都是site-available中配置文件的软链接

注:有关sites-availablesites-enabled的区别是这样的:我们查看主配置文件nginx.conf,会发现这样的配置文件引用:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

因此把对应站点的配置文件分割成sites-availablesites-enabled完全是为了方便管理站点,所有站点配置都放在sites-available中,需要启动一个配置就创建一个软链接,不需要就删除软链接。

不同发行版中的Nginx区别

如果使用不同的Linux发行版,比如CentOS,可能配置文件、日志的目录和Ubuntu不同,这是因为我们使用apt或是yum安装的是软件源中的预编译包,编译的时候指定了一些参数,因此每种发行版安装的Nginx可能都有一点区别(除此之外,安装的Nginx版本不同也是一个因素)。我们可以用如下命令查看Nginx编译时指定了哪些参数:

nginx -V

在Ubuntu Server 16.04中的输出:

nginx version: nginx/1.10.3 (Ubuntu)
built with OpenSSL 1.0.2g  1 Mar 2016
TLS SNI support enabled
configure arguments: --with-cc-opt='-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-http_auth_request_module --with-http_addition_module --with-http_dav_module --with-http_geoip_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module --with-http_v2_module --with-http_sub_module --with-http_xslt_module --with-stream --with-stream_ssl_module --with-mail --with-mail_ssl_module --with-threads

其中包含了很多信息:Nginx的版本,编译器参数,编译的模块(--withs指定的)等等。

关于在Windows上使用Nginx

Nginx提供了针对Windows操作系统的预编译版本,直接去官网下载即可,如果我们的开发电脑是Windows系统,也能同样享受到这个方便的工具。但是,Nginx在Windows系统上似乎不是很稳定,我已经遇到无数次启动莫名报错,进程关不掉,正确的配置却直接无法启动,性能莫名其妙出问题等状况,因此在Windows服务器的生产环境中使用Nginx还有待观察(其实IIS也足够好了)。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap