• 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 /;
    
  • 相关阅读:
    一条命令深度清理你的mac
    将以太坊封装为 ERC20
    golang subprocess tests
    go 笔记
    readme
    如何使用 channel
    修改vscode caipeiyu.writeCnblog ,简化博客发布
    thedao
    firefox 59 无法使用 pac 代理上网
    scrapy简单使用
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/13268705.html
Copyright © 2020-2023  润新知