Linux:nginx
nginx的安装
nginx 入门学习 web服务器软件 windows IIS服务器 linux nginx apache 收费 lighthttp 公司的技术栈 收费版技术栈 apache web服务器 + java + tomcat应用服务器 + oracle + memcached + redhat 企业版linux + svn(代码管理工具) 开源的技术栈(路飞学城) nginx(负载均衡) + python(virtualenv) + uwsgi (python的应用服务器,启动了10个进程处理django drf 请求) + mysql (阿里云的rds主从复制) +redis的主从赋值 +git +vue前端代码服务器 +linux(阿里云的centos7) curl -I 网站域名 可以查看网站的响应头信息 查看网站用了什么服务器 1.yum解决编译nginx所需的依赖包,之后你的nginx就不会报错了 yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2.安装配置nginx软件,下载源代码到 /opt目录中 cd /opt wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
3.解压缩源码,编译且安装 tar -zxvf nginx-1.12.0.tar.gz 切换源码目录 ./configure --prefix=/opt/nginx112/ make && make install
4.进入nginx的工作目录 cd /opt/nginx112/
5.查看gninx的工作目录 [root@localhost nginx112]# ls conf 配置文件目录 html 网页根目录,你的index.html就放在这里,然后通过域名访问 pythonav.cn/index.html html/index.html logs 日志 sbin 存放nginx可执行命令的 6.定制自己的nginx网站 修改/opt/nginx112/html/index.html 这是nginx网页根文件,清空内容写入自己的html标签
7.启动nginx服务器 /opt/nginx112/sbin/nginx # 直接回车执行 添加系统环境变量直接 nginx (:/opt/nginx112/sbin)
8.检查nginx服务端口 ps -ef|grep nginx #查看进程 netstat -tunlp |grep nginx #查看端口
9.通过windows访问nginx web服务,查看是否安装成功 浏览器 访问http://192.168.13.79
nginx的配置文件 (nginx.conf)
1、解析配置文件并利用 nginx 搭建页面
需求:搭建nginx 两个虚拟主机 ,可以访问 www.s15oumei.com www.s15rihan.com
在配置文件中有两个server
1.编译安装配置完成 /opt/nginx11/html/index.html 这是网页的首页文件 2. nginx.conf主配置文件学习 ######################################如下: worker_processes 4; # nginx工作进程数,根据cpu的核数定义 events { worker_connections 1024; # 连接数 } #http区域块,定义nginx的核心web功能 http { include(关键字) mime.types(可修改的值); default_type application/octet-stream; #定义日志格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; #开启访问日志功能的参数 sendfile on; #tcp_nopush on; #keepalive_timeout 0; #保持长连接 keepalive_timeout 65; gzip on; #支持图片 gif等等压缩,减少网络带宽 #这个server标签 控制着nginx的虚拟主机(web站点) server { listen 80; # 定义nginx的入口端口是80端口 server_name www.s15rihan.com; # 填写域名,没有域名就写ip地址 charset utf-8; # 定义编码 # location定义网页的访问url #就代表 用户的请求 是 192.168.13.79/ location / { root /opt/myserver/rihan; #root参数定义网页根目录,目录如果没有则手动创建 index index.html index.htm; #定义网页的首页文件,的名字的 } error_page 404 403 401 400 /404.html; #定义错误页面,客户端的错误,就会返回40x系列错误码 error_page 500 502 503 504 /50x.html; #500系列错误代表后端代码出错 } #在另一个server{}的外面,写入新的虚拟主机2 server{ listen 80; server_name www.s15oumei.com; charset utf-8; location / { root /opt/myserver/oumei; # 定义虚拟主机的网页根目录 index index.html; # 网页的html } } } 3.准备两个虚拟主机的网页根目录内容 [root@localhost myserver] # tree /opt/myserver/ /opt/myserver/ ├── oumei │ └── index.html # 写入自己的内容 └── rihan └── index.html # 写入自己的内容 4.修改windows本地的测试域名 C:\Windows\System32\drivers\etc\hosts文件 写入如下内容: 192.168.13.79 www.s15rihan.com 192.168.13.79 www.s15oumei.com 因为我们没有www.s15oumei.com 也没有 www.s15rihan.com ,因此要在本地搞一个测试域名, 不想改dns的话,就去阿里云去买一个域名~~~~~~~~~~~~~~~~~~~~~~ 5.然后在浏览器测试访问,两个不同的 web站点 www.s15rihan.com www.s15oumei.com 访问以上域名,分别显示不同的内容
2、配置文件中的一些注意事项:
nginx的访问日志功能 1.开启nginx.conf中的日志参数 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #开启访问日志功能的参数 access_log logs/access.log main; 2.检查access.log的日志信息 tail -f access.log nginx的拒绝访问功能 1.在nginx.conf中,添加参数 在server{}虚拟主机标签中,找到location 然后添加参数 #当赵一宁访问 192.168.13.79/ 的时候 location / { #拒绝参数是 deny #deny 写你想拒绝的IP地址 #deny还支持拒绝一整个网站 deny 192.168.13.33; root /opt/myserver/rihan; index index.html; } nginx的错误页面优化 1.修改nginx.conf 中的配置参数 这个s1540x.html存在 虚拟主机定义的网页根目录下 error_page 404 /s1540x.html;
nginx的反向代理
1.中间商 2.微商 3.二手贩子 4.黄牛 火车票
vpn就是正向代理
中国的用户,在自己机器上,使用了一个vpn的ip地址,然后通过这个vpn的IP地址和外接通信
nginx的反向代理功能(自带了反向代理的功能,天生的二道贩子)
1.实验环境准备 准备2个服务器,都安装好nginx软件 nginx1 192.168.13.79 作为web服务器 (理解为火车票售票点) nginx2 192.168.13.24 作为反向代理服务器 (黄牛) 用户 通过浏览器去访问 黄牛 (代理) 浏览器 访问 192.168.13.24 > 192.168.13.79 2.在反向代理服务器中添加配置
......
......
nginx的负载均衡
超哥详解:
集群的概念:一堆服务器做一件事
1.实验准备 准备三台计算机 ,要统一网段的,这里都是13段的 nginx1 192.168.13.121 # 作为nginx负载均衡器 只要我访问这个负载均衡器,查看页面的结果,到底是来自于 nginx2 192.168.13.24 # web服务,提供一个页面 nginx3 192.168.13.79 # web服务,提供一个页面 2.先配置两个nginx web页面 192.168.13.24 准备一个 index.html 写入 你好,我是192.168.13.24机器 192.168.13.79 准备一个 index.html 写入 你好,我是192.168.13.79 然后启动两个nginx web 服务 3.准备一个nginx负载均衡器 192.168.13.121机器上,修改nginx.conf 写入如下内容 定义一个负载均衡池,负载均衡的算法有 调度算法 概述 轮询 按时间顺序逐一分配到不同的后端服务器(默认) weight 加权轮询,weight值越大,分配到的访问几率越高 ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器 url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器 least_conn 最少链接数,那个机器链接数少就分发 1.轮询(不做配置,默认轮询) 2.weight权重(优先级) 3.ip_hash配置,根据客户端ip哈希分配,不能和weight一起用 #写入 upstream s15webserver { server 192.168.13.79 weight 10; server 192.168.13.24 weight 1; } #或者写入 upstream s15webserver { ip_hash; server 192.168.13.79 ; server 192.168.13.24 ; } 然后在虚拟主机中添加 反向代理配置,将用户的请求,直接转发给 负载均衡池中的服务器 # 在server中location中配置 server { listen 80; server_name 192.168.13.121; #当我的请求来自于 192.168.13.121时,走这>个虚拟主机 #charset koi8-r; #access_log logs/host.access.log main; #核心配置,就在这,一条proxy_psss参数即可 location / { proxy_pass http://s15webserver; # 走设置的upstream #root html; #index index.html index.htm; } } 4.启动负载均衡器的 nginx服务
pkill nginx # 杀死之前的进程 nginx -t # 检查 nginx.conf文件语法错误,再启动 nginx # 也可以直接启动,没有配置环境变量就用绝对路径 /opt/nginx112/sbin/nginx 5.在客户端windows中测试访问,负载均衡器 192.168.13.121 ,查看请求分发的结果 浏览器访问192.168.13.121,可以得到其他两台服务器的内容
小练习: 1.搭建好nginx 页面, 2.搭建nginx 两个虚拟主机 ,可以访问 www.s15oumei.com www.s15rihan.com 3.完成nginx负载均衡配置