转载于 https://www.cnblogs.com/wcwnina/p/8728430.html

下载

官方网站:https://nginx.org/en/download.html

Windows下安装

安装

下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放置于英文目录下即可!):

启动

两种方法:

1) 直接双击该目录下的"nginx.exe",即可启动nginx服务器;

2) 命令行进入该文件夹,执行start nginx命令,也会直接启动nginx服务器。

验证

开浏览器,输入地址:http://localhost,访问页面,出现如下页面表示访问成功。

添加到系统服务

执行 vi /etc/init.d/nginx

#!/bin/bash
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig:   - 85 15
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /etc/nginx/nginx.conf
# config:      /etc/sysconfig/nginx
# pidfile:     /var/run/nginx.pidchkconfig: 35 85 15
# Source function library.
. /etc/rc.d/init.d/functions# Source networking configuration.
. /etc/sysconfig/network# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginxlockfile=/var/lock/subsys/nginxmake_dirs() {# make required directoriesuser=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=[]∗[]∗.*/\1/g' -`options=`$nginx -V 2>&1 | grep 'configure arguments:'`for opt in $options; doif [ `echo $opt | grep '.*-temp-path'` ]; thenvalue=`echo $opt | cut -d "=" -f 2`if [ ! -d "$value" ]; then# echo "creating" $valuemkdir -p $value && chown -R $user $valuefifidone
}start() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6make_dirsecho -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval
}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval
}restart() {configtest || return $?stopsleep 1start
}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo
}force_reload() {restart
}configtest() {$nginx -t -c $NGINX_CONF_FILE
}rh_status() {status $prog
}rh_status_q() {rh_status >/dev/null 2>&1
}case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2
esac

创建好添加可执行权限,并添加到自动启动

chmod +x /etc/init.d/nginx

chkconfig --add nginx

Nginx Windows基本操作指令

启动服务:start nginx
退出服务:nginx -s quit
强制关闭服务:nginx -s stop
重载服务:nginx -s reload  (重载服务配置文件,类似于重启,服务不会中止)
验证配置文件:nginx -t
使用配置文件:nginx -c "配置文件路径"
使用帮助:nginx -h

Linux下安装

申明:基于CentOS 7系统。

Nginx依赖包

模块依赖性Nginx需要依赖下面3个包

  1. ssl功能需要 openssl 库 ( 点击下载 )
  2. gzip模块需要 zlib 库 ( 点击下载 )
  3. rewrite模块需要 pcre 库 ( 点击下载 )

依赖包安装顺序依次为:openssl、zlib、pcre, 最后安装Nginx包。

安装教程(源码安装)

step 1:下载所需包

openssl-fips-2.0.2.tar.gz
zlib-1.2.7.tar.gz
pcre-8.21.tar.gz
nginx-1.12.2.tar.gz

step 2:安装OpenSSL

[root@localhost wcw]# tar -zxvf openssl-fips-2.0.2.tar.gz
[root@localhost wcw]# cd openssl-fips-2.0.2
[root@localhost openssl-fips-2.0.2]# ./config
[root@localhost openssl-fips-2.0.2]# make
[root@localhost openssl-fips-2.0.2]# make install

step 3:安装zlib

[root@localhost wcw]# tar -zxvf zlib-1.2.7.tar.gz
[root@localhost wcw]# cd zlib-1.2.7
[root@localhost zlib-1.2.7]# ./configure
[root@localhost zlib-1.2.7]# make
[root@localhost zlib-1.2.7]# make install

step 4:安装pcre

[root@localhost wcw]# tar -zxvf pcre-8.21.tar.gz
[root@localhost wcw]# cd pcre-8.21
[root@localhost pcre-8.21]# ./configure
[root@localhost pcre-8.21]# make
[root@localhost pcre-8.21]# make install

step 5:安装Nginx

[root@localhost wcw]# tar -zxvf nginx-1.12.2.tar.gz

[root@localhost wcw]# cd nginx-1.12.2

[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/install/nginx --with-pcre=../pcre-8.21 --with-zlib=../zlib-1.2.7 --with-openssl=../openssl-fips-2.0.2

[root@localhost nginx-1.12.2]# make

[root@localhost nginx-1.12.2]# make install

请注意:"--with-xxx="的值是解压目录,而不是安装目录!

Nginx Linux基本操作指令

启动服务:nginx
退出服务:nginx -s quit
强制关闭服务:nginx -s stop
重载服务:nginx -s reload  (重载服务配置文件,类似于重启,但服务不会中止)
验证配置文件:nginx -t
使用配置文件:nginx -c "配置文件路径"
使用帮助:nginx -h

此时可以为Nginx添加环境变量,以便操作服务。(>>如何添加Linux环境变量?)

检测是否安装成功:

[root@localhost wcw]# nginx -t

出现如下提示,表示安装成功。

或者,在浏览器地址输入"127.0.0.1"回车出现如下页面,则表示安装成功。

Nginx配置文件说明

在项目使用中,使用最多的三个核心功能是静态服务器、反向代理和负载均衡。

这三个不同的功能的使用,都跟Nginx的配置密切相关,Nginx服务器的配置信息主要集中在"nginx.conf"这个配置文件中,并且所有的可配置选项大致分为以下几个部分.

main                                # 全局配置events {                            # 工作模式配置}http {                              # http设置....server {                        # 服务器主机配置(虚拟主机、反向代理等)....location {                  # 路由配置(虚拟目录等)....}location path {....}location otherpath {....}}server {....location {....}}upstream name {                  # 负载均衡配置....}
}

main模块

  • user    用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
  • worker_processes    指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存(一般几M~几十M不等)根据实际情况进行调整,通常数量是CPU内核数量的整数倍
  • error_log    定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
  • pid    用来指定进程id的存储文件的位置
  • worker_rlimit_nofile    用于指定一个进程可以打开最多文件数量的描述
  • ...

event模块

  • worker_connections    指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
  • multi_accept    配置指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
  • use epoll    配置指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
  • ...

http模块

作为web服务器,http模块是nginx最核心的一个模块,配置项也是比较多的,项目中会设置到很多的实际业务场景,需要根据硬件信息进行适当的配置。

1)基础配置

sendfile on:配置on让sendfile发挥作用,将文件的回写过程交给数据缓冲去去完成,而不是放在应用中完成,这样的话在性能提升有有好处
tcp_nopush on:让nginx在一个数据包中发送所有的头文件,而不是一个一个单独发
tcp_nodelay on:让nginx不要缓存数据,而是一段一段发送,如果数据的传输有实时性的要求的话可以配置它,发送完一小段数据就立刻能得到返回值,但是不要滥用哦keepalive_timeout 10:给客户端分配连接超时时间,服务器会在这个时间过后关闭连接。一般设置时间较短,可以让nginx工作持续性更好
client_header_timeout 10:设置请求头的超时时间
client_body_timeout 10:设置请求体的超时时间
send_timeout 10:指定客户端响应超时时间,如果客户端两次操作间隔超过这个时间,服务器就会关闭这个链接limit_conn_zone $binary_remote_addr zone=addr:5m :设置用于保存各种key的共享内存的参数,
limit_conn addr 100: 给定的key设置最大连接数server_tokens:虽然不会让nginx执行速度更快,但是可以在错误页面关闭nginx版本提示,对于网站安全性的提升有好处哦
include /etc/nginx/mime.types:指定在当前文件中包含另一个文件的指令
default_type application/octet-stream:指定默认处理的文件类型可以是二进制
type_hash_max_size 2048:混淆数据,影响三列冲突率,值越大消耗内存越多,散列key冲突率会降低,检索速度更快;值越小key,占用内存较少,冲突率越高,检索速度变慢

2)日志配置

access_log logs/access.log:设置存储访问记录的日志
error_log logs/error.log:设置存储记录错误发生的日志

3)SSL证书配置

ssl_protocols:指令用于启动特定的加密协议,nginx在1.1.13和1.0.12版本后默认是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,TLSv1.1与TLSv1.2要确保OpenSSL >= 1.0.1 ,SSLv3 现在还有很多地方在用但有不少被攻击的漏洞。
ssl prefer server ciphers:设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件

4)压缩配置

gzip 是告诉nginx采用gzip压缩的形式发送数据。这将会减少我们发送的数据量。
gzip_disable 为指定的客户端禁用gzip功能。我们设置成IE6或者更低版本以使我们的方案能够广泛兼容。
gzip_static 告诉nginx在压缩资源之前,先查找是否有预先gzip处理过的资源。这要求你预先压缩你的文件(在这个例子中被注释掉了),从而允许你使用最高压缩比,这样nginx就不用再压缩这些文件了(想要更详尽的gzip_static的信息,请点击这里)。
gzip_proxied 允许或者禁止压缩基于请求和响应的响应流。我们设置为any,意味着将会压缩所有的请求。
gzip_min_length 设置对数据启用压缩的最少字节数。如果一个请求小于1000字节,我们最好不要压缩它,因为压缩这些小的数据会降低处理此请求的所有进程的速度。
gzip_comp_level 设置数据的压缩等级。这个等级可以是1-9之间的任意数值,9是最慢但是压缩比最大的。我们设置为4,这是一个比较折中的设置。
gzip_type 设置需要压缩的数据格式。上面例子中已经有一些了,你也可以再添加更多的格式。

5)文件缓存配置

open_file_cache 打开缓存的同时也指定了缓存最大数目,以及缓存的时间。我们可以设置一个相对高的最大时间,这样我们可以在它们不活动超过20秒后清除掉。 open_file_cache_valid 在open_file_cache中指定检测正确信息的间隔时间。 open_file_cache_min_uses 定义了open_file_cache中指令参数不活动时间期间里最小的文件数。 open_file_cache_errors 指定了当搜索一个文件时是否缓存错误信息,也包括再次给配置中添加文件。我们也包括了服务器模块,这些是在不同文件中定义的。如果你的服务器模块不在这些位置,你就得修改这一行来指定正确的位置。

sever模块

srever模块配置是http模块中的一个子模块,用来定义一个虚拟访问主机,也就是一个虚拟服务器的配置信息。

server {listen         80;server_name    localhost  192.168.1.100;charset        utf-8;access_log     logs/access.log;error_log      logs/error.log;......
}
  • server:一个虚拟主机的配置,一个http中可以配置多个server
  • server_name:用来指定ip地址或者域名,多个配置之间用空格分隔
  • charset:用于设置www/路径中配置的网页的默认编码格式
  • access_log:用于指定该虚拟主机服务器中的访问记录日志存放路径
  • error_log:用于指定该虚拟主机服务器中访问错误日志的存放路径

location模块

location模块是Nginx配置中出现最多的一个配置,主要用于配置路由访问信息。

在路由访问信息配置中关联到反向代理、负载均衡等等各项功能,所以location模块也是一个非常重要的配置模块。

1)基本配置

location / {root    /nginx/www;index    index.php index.html index.htm;
}
  • location /:表示匹配访问根目录
  • root:用于指定访问根目录时,访问虚拟主机的web目录
  • index:在不指定访问具体资源时,默认展示的资源文件列表

2)反向代理配置

通过反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化。

location / {proxy_pass http://localhost:8888;proxy_set_header X-real-ip $remote_addr;proxy_set_header Host $http_host;
}

3)uwsgi配置

location / {include uwsgi_params;uwsgi_pass localhost:8888;
}

负载均衡模块(upstream)

upstream模块主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器。简单的配置方式如下。

upstream name {ip_hash;server 192.168.1.100:8000 weight=9;server 192.168.1.100:8001 down;server 192.168.1.100:8002 max_fails=3;server 192.168.1.100:8003 fail_timeout=20s;server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
}
  • ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定
  • server host:port:分发服务器的列表配置
  • -- down:表示该主机暂停服务
  • -- max_fails:表示失败最大次数,超过失败最大次数暂停服务
  • -- fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求

Nginx主要配置

静态Http服务器配置

首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。
配置:

server {listen 80;   # 端口server_name localhost  192.168.1.100;   # 域名   location / {             # 代表这是项目根目录root /usr/share/nginx/www;   # 虚拟目录}
}

反向代理服务器配置

什么是反向代理?
客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。

反向代理配置:

server {listen 80;location / {proxy_pass http://192.168.0.112:8080;   # 应用服务器HTTP地址}
}

既然服务器可以直接HTTP访问,为什么要在中间加上一个反向代理,不是多此一举吗?反向代理有什么作用?继续往下看,下面的负载均衡、虚拟主机,都基于反向代理实现,当然反向代理的功能也不仅仅是这些。

负载均衡配置

当网站访问量非常大,也摊上事儿了。因为网站越来越慢,一台服务器已经不够用了。于是将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡。

负载均衡配置:

upstream myapp {ip_hash;  # 固定访客server 192.168.0.111:8080 weight=9;   # 应用服务器1server 192.168.0.112:8080 weight=1;   # 应用服务器2
}

虚拟主机配置

有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。
例如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

虚拟主机配置:

server {listen 80 default_server;server_name _;return 444;   # 过滤其他域名的请求,返回444状态码
}
server {listen 80;server_name www.aaa.com;   # www.aaa.com域名location / {proxy_pass http://localhost:8080;   # 对应端口号8080}
}
server {listen 80;server_name www.bbb.com;   # www.bbb.com域名location / {proxy_pass http://localhost:8081;   # 对应端口号8081}
}

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

Nginx开机启动(方法1,适用CentOS7,systemctl管理服务)

CentOS7系统服务脚本目录

用户(user):用户登录后才能运行的程序,存在用户(user)。

/usr/lib/systemd/user

系统(system):如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里。

/usr/lib/systemd/system

编写service脚本

服务文件名以.service结尾:

vim /usr/lib/systemd/system/nginx.service

编写脚本内容(固定格式):

[Unit]
Description=nginx
After=network.target[Service]
Type=forking
PIDFile=/usr/install/nginx/logs/nginx.pid
ExecStart=/usr/install/nginx/sbin/nginx
ExecReload=/usr/install/nginx/sbin/nginx -s reload
ExecStop=/usr/install/nginx/sbin/nginx -s stop
PrivateTmp=true[Install]
WantedBy=multi-user.target

以上路径必须均为绝对路径!!而ExecStart、ExecReload、ExecStop的值也可以是"/etc/init.d"下的自定义的sh脚本文件的绝对路径,我就是采用这种方式来实现 uWSGI 开机启动的:

/etc/init.d目录下新建uWSGI服务启动脚本文件"uwsgi-start.sh":#!/bin/sh
/pyvenv/bin/uwsgi --ini /pyvenv/src/eduonline/uwsgi.ini;
/etc/init.d目录下新建uWSGI服务重启脚本文件"uwsgi-restart.sh":#!/bin/sh
/pyvenv/bin/uwsgi --restart /pyvenv/src/eduonline/uwsgi.pid;
/etc/init.d目录下新建uWSGI服务停止脚本文件"uwsgi-stop.sh":#!/bin/sh
/pyvenv/bin/uwsgi --stop /pyvenv/src/eduonline/uwsgi.pid;

注意:sh脚本中同样采用绝对路径!!保存后,赋予可读可执行权限。然后编写service脚本文件。

设置开机启动(强大的CentOS服务管理工具systemctl)

systemctl enable nginx.service      #".service"可省略# 附其他命令:
systemctl start nginx.service       # 启动
systemctl restart nginx.service     # 重启,服务会中止一会儿
systemctl reload nginx.service    # 重载服务配置文件,类似于重启,但服务不会中止
systemctl stop nginx.service        # 停止
systemctl disable nginx.service     # 关闭开机启动

如果提示"Failed to execute operation: Access denied",输入"systemctl daemon-reexec"可解决。

Nginx开机启动(方法2,适用CentOS7以下)

首先,在Linux系统的"/etc/init.d/"目录下创建nginx脚本文件,使用如下命令:

touch nginx       # 创建
vim nginx         # 编辑

在脚本中添加如下命令:

 View Code

保存脚本文件后对所有用户追加可执行权限:

chmod a+x /etc/init.d/nginx

先将nginx服务加入chkconfig管理列表:

chkconfig --add /etc/init.d/nginx

设置终端模式开机启动:

chkconfig nginx on

Nginx 安装与部署配置以及Nginx和uWSGI开机自启相关推荐

  1. nginx安装、使用及搭建nginx服务器

    nginx安装.使用及搭建nginx服务器 一.前情知识 1.what is 服务? 2.what is ngnix服务? 3.how to 搭建? 4.what is 防火墙和端口 二.安装ngni ...

  2. 单台AD域控安装和部署配置

    单台AD域控安装和部署配置 环境 准备工作 设置主机名 配置静态ip地址 安装AD域服务 添加角色和功能 开始之前-安装类型-服务器选择,都默认下一步 服务器角色 功能,默认下一步 AD DS,默认下 ...

  3. nginx / 安装、部署和启动

    一.安装和部署 1.依赖包的安装 (1)GCC 全家桶 sudo apt install git build-essential 包含的软件如下: 依赖: libc6-dev 依赖: <libc ...

  4. Nginx安装及详细配置

    前言 公司项目是一个前后端分离的项目. 生产环境:前端采用nginx进行的部署,后端则是通过kubesphere的一键式部署. 再此,就记录一下nginx搭建过程,分享给小伙伴们,避免时间的浪费 安装 ...

  5. nginx安装及部署

    下载 官方网站:https://nginx.org/en/download.html Windows下安装 安装 下载后解压(切记不能含有中文路径!!),文件结构如图(我解压的路径就有中文,记得拷贝放 ...

  6. django+nginx+gunicorn+supervisord部署配置

    一.背景介绍 后端服务是Django框架编写的,需要使用Gunicorn进行服务托管,使用supervisord进行保持活跃,最后通过Nginx向外提供服务 二.nginx+gunicorn 安装和配 ...

  7. Nginx安装以及基本配置

    Nginx 简介 Nginx(发音同"engine X")是异步框架的网页服务器,也可以用作反向代理.负载平衡器和HTTP缓存. 在我们前端日常开发中,只需要把前端项目打成一个静态 ...

  8. Nginx 安装及模块配置

    文章目录 Nginx 一.环境部署 1.1 Linux安装 1.2 Docker安装 1.3 二进制编译安装 1.4 nginx.conf 1.5 Nginx工作模式 1.6 常用负载架构组成 二.入 ...

  9. 烂泥:php5.6源码安装及php-fpm配置与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. LNMP环境的搭建中,现在只有php没有源码安装过.这篇文章就把这个介绍下. 注意本篇文章使用的centos 6.5 64bit. 登陆centos下载 ...

  10. 烂泥行天下 php,烂泥:php5.6源码安装及php-fpm配置与nginx集成

    本文首发于烂泥行天下. LNMP环境的搭建中,现在只有php没有源码安装过.这篇文章就把这个介绍下. 注意本篇文章使用的centos 6.5 64bit. 登陆centos下载php5.6的安装包.p ...

最新文章

  1. js验证开始日期不能大于结束日期_js前台判断开始时间是否小于结束时间
  2. Django+Echarts画图实例
  3. 《怎样成为一个高手》观后感
  4. 深度学习(七十)darknet 实现编写mobilenet源码
  5. python实现神经网络_3. Python矢量化实现神经网络
  6. centos gcc 版本安装9.3 c++17
  7. java点击图片发出声音_[Java教程]点击放大图片
  8. beta冲刺7-咸鱼
  9. 伴生对象-apply方法
  10. leetcode(85)最大矩形
  11. @Transactional注解属性(3)
  12. java listbook,java,_Java泛型问题,在编译时,提示警告: 需要: ListT 找到: ListBookDetails,java - phpStudy...
  13. 你认识什么是前端吗?你是合格的前端吗?
  14. linux 列出指定目录下所有文件的 列表集合
  15. hdfs基本操作命令(完整)
  16. 建筑平面布置与防火防烟分区(一)
  17. 东莞塘厦适合团建的农家乐|团建出游好去处|休闲游玩好地方
  18. 机器学习 - 人脸识别
  19. Scons编译工具入门
  20. Word无法插入两个目录解决方法

热门文章

  1. 如何刷微博,怎么刷微博下拉框,怎样刷微博相关搜索
  2. Volatility内存取证使用
  3. 山东大学计算机转专业2021,2021年山东大学大一新生转专业及入学考试相关规定...
  4. 基于AD9854个和MSP430的波形发生器
  5. 天龙八部手游服务器维护公告,天龙八部手游 近期更新维护公告
  6. 打印系统开发(9)——办公打印机使用教程
  7. 阿尔兹海默症AD最新研究进展(2021年7月)
  8. Oracle event px,oracle wait event:PX Deq Credit: send blkd
  9. redhat安装wine教程_Ubuntu20.04LTS安装搜狗输入法
  10. CH340G软件识别、usb转串口软件识别、测试