Nginx从安装到使用

Nginx从安装到使用

简介

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx是由lgor Sysoev为俄罗斯访问量第二的站点(rambler.ru)开发,它已经在该站点上运行超过四年多了。lgor将源代码以类BSD许可证的形式发布。自Nginx发布以来,Nginx已经因为它的稳定性、丰富的功能集、示例配置文件和地系统资源的消耗而闻名了。目前国内大门户网站已经部署了Nginx,如新浪、网易、腾讯。

下载

访问Nginx官网

点击需要下载的版本即可进入下载页,进行下载。

安装必要环境

由于Nginx是C语音编写的,所以我们需要先安装一下相关的依赖包。

yum install gcc-c++ 
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel

安装

  • 先上传压缩包到服务器,放到一个合适的文件夹内,这里我放到了/opt/software中

  • 使用tar -zxvf 命令解压

  • 创建一个nginx文件夹,用于安装

  • 进入解压好的文件夹,输入./configure命令,配置安装信息

    • ./configure可以指定 --prefix=/path,表示nginx要安装到某个位置
    • 这里我们一般指向上一个文件夹./configure --prefix=/opt/software/nginx
    • 通过这个属性还可以安装一些其他的模块(略)
  • 执行make && make install 编译和安装,&&是短路与的意思,也就是说编译失败就不会安装

  • 此时我们回到nginx文件夹,可以看到conf、html、logs、sbin四个文件夹

开放端口

由于nginx是用的80端口,我们需要先放行其端口号,放行方法如下:

firewall-cmd --zone=public --add-port=80/tcp --permanent   # 开放80端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent  #关闭80端口

firewall-cmd --reload   # 配置立即生效

查看所有已经开放的端口

firewall-cmd --zone=public --list-ports  #查看开放的端口列表

如果觉得开放端口麻烦,可以直接关闭防火墙

systemctl stop firewalld.service  #关闭防火墙
systemctl status firewalld.service  #查看防火墙状态
systemctl start firewalld.service  #开启防火墙

查看监听的端口

netstat -lnpt #查看端口监听
#PS:centos7默认没有 netstat 命令,需要安装 net-tools 工具,yum install -y net-tools

检查端口被哪个进程占用

netstat -lnpt |grep 端口号

查看程序是否运行

ps -ef | grep 应用名称

查看进程的详细信息

ps 进程id

终止进程

kill -9 线程id

常用命令

使用nginx的命令,需要先进入sbin目录

#根据某个配置文件启动Nginx
nginx -c /opt/software/nginx/conf/nginx.conf

#直接启动nginx,使用默认的配置文件
./nginx

#关闭nginx
./nginx -s quit

#重启nginx  配置文件修改后必须重载
./nginx -s reload

#查看版本信息
./nginx -v

#查看nginx的配置文件目录
./nginx -t

#查看nginx帮助信息
./nginx -h

配置文件

nginx的配置文件默认在nginx的conf文件夹下,名称为nginx.conf。

主模块

#是否以守护线程方式运行,也就是是否在后台脱离终端运行。关闭守护线程可以方便调试
#在配置文件的首行加入  默认为开启状态
daemno on | off;

#是否以多线程方式运行 默认为开启
master_process on | off;

上述的配置建议不要动,使用默认即可

#默认的进程数量  默认为1  一般和CPU的核心数保持一致 服务器/虚拟机一般也都是单核 所以无需修改
worker_processes 1;

#引入文件
include /path/fileName;

#错误日志   需要指定文件和关注的错误级别
error_log /path/file [debug|info|notice|warn|error|crit]

events模块

events模块包含了nginx了有关连接处理的配置

#默认为1024
#在nginx作为http服务器的时候,最大连接数为worker_processes *  worker_connctions
#在nginx作为反向代理服务器的时候,最大连接数为worker_processes * worker_connections / 2 
worker_connections 1024;

#nginx的负载均衡策略
use epoll;

http模块

#引入文件
include /path/fileName;

#location:处理请求路径
#别名 如现在访问了http://localhost:8080/file/1.jpg 
#加入别名后会直接访问http://localhost:8080/file/img/1.jpg
#alias必须以/结束!
location /file{
	alias /file/img/;
}

#别名支持正则表达式
^:		匹配字符串开始的位置
$:		匹配字符串结束的位置
.*:		.匹配任意字符,*匹配数量0到无穷大
\.:		斜杠用来转移,此时代表匹配.
(值1|值2|值3|值4):或匹配,例:(jpg|gif|png|bmp),匹配jpg、或gif、或png、或bmp
i:		不区分大小写
* ~ 			 为区分大小写匹配
* ~* 			 为不区分大小写匹配
* !~和!~*	分别为区分大小写不匹配及不区分大小写不匹配


#禁止访问、授权访问
location /{
	deny ipaddress; #禁止此机器访问
	allow ipaddress/24;	#开启一个ip段的访问
	allow ipaddress/16;
	denyall;
}

server模块

一个server代表一个虚拟机

#当前虚拟机的监听端口
listen port;

#当前虚拟机的 监听的端口
listen ipaddress:port;

#当前虚拟机的监听域名 可以加多个
server_name 域名 域名 域名;

#超时时间
resolver_timeout 5s;

#location:处理请求路径

#将/image拦截,转到/opt/nginx_images 
#例如http://www.giao.com/image/1.jpg,会访问http://www.giao.com//opt/nginx_image/1.jpg
#它和alias的区别就是 root后可以不使用/结束
location /image {
	root /opt/nginx_images
}

负载均衡

#负载均衡池
upstream backend{
	#weight为权重 默认1  这里是5也就是说接收五次请求后,再换机器 默认为轮询
	#faild_timeout=30s; 多少秒没有响应认为超时
	#max_fails=3 多少秒没有响应任务服务器挂掉了
	server 192.168.166.128:8088 weight=5;
	server 192.168.166.129:8080;
}

server{
	location / {
		#使用负载均衡
		proxy_pass http://backend;
	}
}

反向代理

反向代理要修改nginx的配置文件,修改配置之前我们先养成备份的习惯,先使用cp命令备份一个nginx.conf。

案例1:实现访问本机ip,代理到tomcat服务器。

  • 修改server中的server_name为本机的ip地址(因为外部用户访问服务器的时候是通过这个ip访问的)
  • 修改location / {}
  • 加入proxy_pass http://127.0.0.1:8080;

案例2:访问http://192.168.166.129:9001/edu/直接跳转到127.0.0.1:8080

​ 访问http://192.168.166.129:9001/vod直接跳转到127.0.0.1:8081

nginx的反向代理可能会导致session失效,例如 http://www.baidu.com:8888/giao 被www.baidu.com代理,此时就会造成session失效
解决办法: 在反向代理配置下加入

proxy_cookie_path /giao /;
posted @ 2020-07-02 19:14  张瑞丰  阅读(190)  评论(0编辑  收藏  举报