nginx入门

一,什么是Nginx?

  • 是一个高性能web服务器,具有反向代理功能。可以对tomcat服务器进行代理
  • 反向代理:可以将客户端的请求进行代理,交给合适的tomcat服务器进行处理
  • 高性能:tomcat的并发量是600左右,而Nginx内存为1M左右,并发度达到了5万多。

 

 

二,负载均衡:

  • 轮询:将请求依次循环地交给后台服务器处理 ,每个服务器处理请求的概率是相同的     例如(服务器1,服务器2,服务器3,服务器1,服务器2,服务器3,,,)
  • 加权轮询:给性能好的服务器加权重,权重越高优先级就越高,Nginx转发的请求会被其优先处理
  • ip hash:由于session在多态tomcat服务器中是不能共享的,你发送的第一次请求访问tomcat1,在其中保存了你的信息到session中,但你的第二次请求访问了tomcat2,其中没有你的session信息,就会造成出错。ip hash有一个集合存储了你的ip地址和拥有你session信息的tomcat服务器ip,使得你的第二次请求会访问tomcat1,不会造成信息的丢失。(一般不用ip hash,我们使用Redis)
  • 动静分离:静态的资源直接从Nginx返回。

三,Nginx的安装:

window环境下:

  • 下载地址:http://nginx.org/en/download.html
  • 版本:选择stable version 右边的那一个
  • 解压:放到英文路径下
  • 运行:以管理员的身份打开Nginx.exe程序
  • 查看:http://localhost/,进入后有Nginx欢迎页面,说明启动成功

Linux环境下:

  1. 下载地址:http://nginx.org/en/download.html
  2. 版本:选择stable version 左边的那一个
  3. 下载上传:使用XFTP把压缩文件上传到阿里云服务器
  4. 解压:使用xShell进行存放压缩包的路径,对压缩包进行解压:tar -zxvf nginx-1.18.0.tar.gz
  5. 进入文件:进入解压后的文件:cd nginx-1.18.0
  6. 配置:执行配置文件:./configure
  7. 创建文件:make
  8. 确定安装完成:make install
  9. 查看Nginx所在的位置:whereis nginx
  10. 发现位置是在:nginx: /usr/local/nginx
  11. 进入该目录:cd /usr/local/nginx
  12. 查看文件:ll
  13. 进入sbin文件:cd /sbin
  14. 启动Nginx:./nginx(条件:防火墙80端口已经打开,阿里云安全组80端口开放)
  15. 80端口被启动失败:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
  16. 查看80端口被占用的情况:netstat -lnp|grep 80
  17. 发现80端口被http服务器主程序httpd占用,进程号是7276
  18. 杀死这个进程:kill -9 7276
  19. 查看杀死情况:netstat -lnp|grep 80  没想到httpd又生成了一个新的进程占用80端口,索性直接把Apache卸载
  20. 执行./nginx启动
  21. 成功

 

常用命令:

  • 进入启动目录:cd /usr/local/nginx/sbin
  • 启动:./nginx
  • 停止:./nginx -s stop
  • 安全退出:./nginx -s quit
  • 重新加载配置文件:./nginx -s reload
  • 查看Nginx进程:ps aux|grep nginx

在sbin目录下修改端口号的过程

  • 返回上一级目录:cd ..
  • 查看目录中的文件:ls
  • 进入配置目录:cd conf
  • 使用vim编辑器打开nginx.conf:vim nginx.conf
  • 在vim中进入写模式:i
  • 找到端口号,进行修改
  • 保存vim编辑后的结果退出:按esc键退出写模式,输入:wq保存结果退出编辑器
  • 返回上一级目录cd..
  • 进入sbin目录:cd sbin
  • 重新加载配置文件:./nginx -s reload

查看并打开端口号:

  • 查看防火墙放行的端口号:firewall-cmd --list-all
  • 打开端口号6666:firewall-cmd --zone=public --add-port=6666/tcp --permanent
  • 重启防火墙使得打开端口生效:firewall-cmd --reload
  • 查看是否开启

配置阿里云安全组:(前提是你已经买服务器,已经有实例了)

 

三,配置nginx.conf文件

我的文件路径:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\JetBrains\nginx-1.18.0\conf

########### 每个指令必须有分号结束。#################
#user administrator administrators;  #配置用户或者组,默认为nobody nobody。
#worker_processes 2;  #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
    accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
    multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
    #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    worker_connections  1024;    #最大连接数,默认为512
}
http {
    include       mime.types;   #文件扩展名与文件类型映射表
    default_type  application/octet-stream; #默认文件类型,默认为text/plain
    #access_log off; #取消服务日志    
    log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
    access_log log/access.log myFormat;  #combined为日志格式的默认值
    sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
    sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
    keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。

    upstream mysvr {   
      server 127.0.0.1:7878;
      server 192.168.10.121:3333 backup;  #热备
    }
    error_page 404 https://www.baidu.com; #错误页
    server {
        keepalive_requests 120; #单连接请求上限次数。
        listen       4545;   #监听端口
        server_name  127.0.0.1;   #监听地址       
        location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
           #root path;  #根目录
           #index vv.txt;  #设置默认页
           proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
           deny 127.0.0.1;  #拒绝的ip
           allow 172.18.5.54; #允许的ip           
        } 
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值