状态码(重点)
200:正常访问
301:永久重定向
307:内部重定向
客户端报错(nginx/apache)
401:用户名密码认证失败
403:找不到主页,权限不足,selinux没有关
404:找不到页面
后端代码程序,php,java... MySQL ,redis
500:内部错误
502:bad gateway
503:服务器过载
504:请求超时
咱们班总共38人,一人两台设备,访问www.123.xxx 就会发起10次请求,访问两次
PV:38*2*2*10
UV:38*2
IP:1
SOA:松耦合架构
Nginx
两种部署方式:
1)yum安装
更改官方源:
[root@web ~]# vim /etc/yum.repos.d/nginx.repo[nginx]name=nginx repobaseurl=http://nginx.org/packages/centos/7/$basearch/gpgcheck=0enabled=1
安装依赖包
yum install -y gcc gcc-c++ autoconf pcre pcre-devel openssl-devel make automake
安装nginx-1.16.0
yum install -y nginx
[root@web01 ~]# cd /usr/local/[root@web01 local]# lltotal 0drwxr-xr-x. 2 root root 6 Apr 11 2018 bindrwxr-xr-x. 2 root root 6 Apr 11 2018 etcdrwxr-xr-x. 2 root root 6 Apr 11 2018 gamesdrwxr-xr-x. 2 root root 6 Apr 11 2018 includedrwxr-xr-x. 2 root root 6 Apr 11 2018 libdrwxr-xr-x. 2 root root 6 Apr 11 2018 lib64drwxr-xr-x. 2 root root 6 Apr 11 2018 libexeclrwxrwxrwx 1 root root 23 Aug 14 18:56 nginx -> /usr/local/nginx-1.16.0drwxr-xr-x. 2 root root 6 Apr 11 2018 sbindrwxr-xr-x. 5 root root 49 Jul 24 09:24 sharedrwxr-xr-x. 2 root root 6 Apr 11 2018 src
2)源码安装
解压
tar xf nginx-1.16.0.tar.gz#创建www用户groupadd www -g 666useradd www -u 666 -g 666 -s /sbin/nologin -M
生成
./configure --prefix=/usr/local/nginx-1.16.0 \--user=www \--group=www \--with-http_ssl_module \--with-http_stub_status_module \--with-stream
编译
make
安装
make install
如何升级nginx或者添加功能
ln -s /usr/local/nginx-1.16.0 /usr/local/nginx#升级版本./configure --prefix=/usr/local/nginx-1.17.2 \--user=www \--group=www \--with-http_ssl_module \--with-http_stub_status_module \--with-stream \--with-http_mp4_module#重新软链接rm -f /usr/local/nginx && ln -s /usr/local/nginx-1.17.2 /usr/local/nginx-----------------------------------------------------------------------------------------#添加模块./configure --prefix=/usr/local/nginx_new-1.16.0 \--user=www \--group=www \--with-http_ssl_module \--with-http_stub_status_module \--with-stream \--with-http_mp4_module#重新软链接rm -f /usr/local/nginx && ln -s /usr/local/nginx_new-1.16.0 /usr/local/nginx
Ansible,SaltStack
先源码安装,然后打rpm包,放到yum仓库,然后yum安装
使用systemd管理nginx
vim /usr/lib/systemd/system/nginx.service[Unit]Description=nginx - high performance web serverDocumentation=http://nginx.org/en/docs/After=network-online.target remote-fs.target nss-lookup.targetWants=network-online.target[Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confExecReload=/bin/kill -s HUP $MAINPIDExecStop=/bin/kill -s TERM $MAINPID[Install]WantedBy=multi-user.target
nginx相关配置文件
1.Nginx主配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/nginx.conf | 配置文件 | nginx主配置文件 |
/etc/nginx/conf.d/default.conf | 配置文件 | 默认网站配置文件 |
2.Nginx代理相关参数文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/fastcgi_params | 配置文件 | Fastcgi代理配置文件 |
/etc/nginx/scgi_params | 配置文件 | scgi代理配置文件 |
/etc/nginx/uwsgi_params | 配置文件 | uwsgi代理配置文件 |
3.Nginx编码相关配置文件
路径 | 类型 | 作用 |
---|---|---|
/etc/nginx/win-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-utf | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/koi-win | 配置文件 | Nginx编码转换映射文件 |
/etc/nginx/mime.types | 配置文件 | Content-Type与扩展名 |
4.Nginx管理相关命令
路径 | 类型 | 作用 |
---|---|---|
/usr/sbin/nginx | 命令 | Nginx命令行管理终端工具 |
/usr/sbin/nginx-debug | 命令 | Nginx命令行与终端调试工具 |
4.Nginx日志相关目录与文件
路径 | 类型 | 作用 |
---|---|---|
/var/log/nginx | 目录 | Nginx默认存放日志目录 |
/etc/logrotate.d/nginx | 配置文件 | Nginx默认的日志切割 |
nginx的配置文件详解
Nginx主配置文件整体分为三块进行学习,分别是CoreModule(核心模块)
,EventModule(事件驱动模块)
,HttpCoreModule(http内核模块)
Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。Nginx主配置文件整体分为三块进行学习,分别是CoreModule(核心模块),EventModule(事件驱动模块),HttpCoreModule(http内核模块)CoreModule核心模块user www; #Nginx进程所使用的用户worker_processes 1; #Nginx运行的work进程数量(建议与CPU数量一致或auto)error_log /log/nginx/error.log #Nginx错误日志存放路径pid /var/run/nginx.pid #Nginx服务运行后产生的pid进程号EventModule(事件驱动模块)events { worker_connections 25535; #每个worker进程支持的最大连接数 use epoll; #事件驱动模型, epoll默认}HttpCoreModule(http内核模块)#http层开始http {#包含资源类型文件 include /etc/nginx/mime.types;#默认以下载方式传输给浏览器(前提是该资源在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 /var/log/nginx/access.log main;#高效文件传输 sendfile on;#搭配sendfile使用 #tcp_nopush on;#长连接超时时间 keepalive_timeout 65;#是否开启压缩 #gzip on; #使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机) 'server' { listen 80; #监听端口, 默认80 server_name driverzeng.com; #提供的域名 access_log access.log; #该网站的访问日志 #控制网站访问路径 'location' / { root /usr/share/nginx/html; #存放网站源代码的位置 index index.html index.htm; #默认返回网站的文件 } } ... #第二个虚拟主机配置 'server' { ... } include /etc/nginx/conf.d/*.conf; #包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件} #http结束层
手写虚拟主机
[root@web01 conf.d]# vim game.confserver { listen 80; server_name localhost; location / { root /code; index index.html; }}#创建站点目录[root@web01 conf.d]# mkdir /code#授权www用户给站点目录[root@web01 conf.d]# chown -R www.www /code#手动创建index[root@web01 code]# echo game > /code/index.html
[root@web01 code]# ll /code/total 18860-rw-r--r-- 1 root root 19304923 Aug 14 11:36 h5_games.zip-rw-r--r-- 1 www www 5 Aug 14 11:51 index.html[root@web01 code]# pwd/code[root@web01 code]# unzip h5_games.zip
虚拟主机
方式一、基于主机多IP方式方式二、基于端口的配置方式方式三、基于多个hosts名称方式(多域名方式)
[root@web01 ~]# cd /etc/nginx/conf.d/[root@web01 conf.d]# lltotal 8-rw-r--r-- 1 root root 488 Apr 23 22:34 default.conf.gz[root@web01 conf.d]# vim game.confserver { listen 80; 监听端口 server_name localhost; 一般是跟域名,但是现在没有域名,所以写localhost location / { root /code/h5_games; root表示站点目录, index index.html; }}~
[root@web01 conf.d]# mkdir /code 创建站点目录[root@web01 conf.d]# vim /etc/nginx/nginx.conf 把里面的user nginx 改成user www;[root@web01 conf.d]# nginx -t 重启nginx 检测语法nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@web01 conf.d]# nginx -s reload [root@web01 conf.d]# chown -R www.www /code 授权[root@web01 code]# echo game >/code/index.html[root@web01 code]# ll-rw-r--r-- 1 www www 5 Aug 14 11:53 index.html[root@web01 code]# cat index.htmlgame[root@web01 code]# chown -R www.www /code/[root@web01 conf.d]# gzip default.conf.gz[root@web01 conf.d]# nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful[root@web01 conf.d]# nginx -s reload访问浏览器10.0.0.7 会出现一个game
方式一
[root@web01 conf.d]# cd /etc/nginx/[root@web01 nginx]# lldrwxr-xr-x 2 root root 46 Aug 14 15:33 conf.d-rw-r--r-- 1 root root 1007 Apr 23 22:36 fastcgi_params-rw-r--r-- 1 root root 2837 Apr 23 22:36 koi-utf-rw-r--r-- 1 root root 2223 Apr 23 22:36 koi-win-rw-r--r-- 1 root root 5231 Apr 23 22:36 mime.typeslrwxrwxrwx 1 root root 29 Aug 13 19:18 modules -> ../../usr/lib64/nginx/modules-rw-r--r-- 1 root root 641 Aug 14 15:16 nginx.conf-rw-r--r-- 1 root root 636 Apr 23 22:36 scgi_params-rw-r--r-- 1 root root 664 Apr 23 22:36 uwsgi_params-rw-r--r-- 1 root root 3610 Apr 23 22:36 win-utf[root@web01 nginx]# cd /etc/nginx/conf.d/[root@web01 conf.d]# lltotal 8-rw-r--r-- 1 root root 488 Apr 23 22:34 default.conf.gz-rw-r--r-- 1 root root 176 Aug 14 15:33 game.conf[root@web01 conf.d]# gzip -d default.conf.gz[root@web01 conf.d]# lltotal 8-rw-r--r-- 1 root root 1093 Apr 23 22:34 default.conf-rw-r--r-- 1 root root 176 Aug 14 15:33 game.conf[root@web01 conf.d]# vim default.confserver { listen 10.0.0.7:80; server_name -; [root@web01 conf.d]# vim game.conf server { listen 172.16.1.7:80; 监听在内网IP上 server_name -; location / { root /code/h5_games; index index.html;}}访问一下10.0.0.7 刷新下还是显示那个游戏的页面,就使用下面的操作[root@web01 conf.d]# pidof nginx7351 6780[root@web01 conf.d]# pidof nginx|xargs kill -9[root@web01 conf.d]# !psps -ef|grep nginxroot 7372 7286 0 15:50 pts/1 00:00:00 grep --color=autonginx[root@web01 conf.d]# systemctl start nginx[root@web01 conf.d]# netstat -lntup 然后我们在查看一下 发现内网和外网各占一个进程
9然后我们在访问一下,就可以了
[root@web01 conf.d]# curl 172.16.1.7 发现是游戏
方式二基于端口
/etc/nginx/conf.d/port_80.conf
10.0.0.7:80
浏览器:port:80
/etc/nginx/conf.d/port_81.conf
10.0.0.7:81 浏览器内容:port:81
[root@web01 conf.d]# vim default.conf server { listen 81; server_name localhost; [root@web01 conf.d]# vim game.conf server { listen 80; server_name localhost; location / { root /code/h5_games; index index.html;}}[root@web01 conf.d]# nginx -t[root@web01 conf.d]# nginx -s reload[root@web01 conf.d]# netstat -lntup[root@web01 conf.d]# systemctl restart nginx 访问10.0.0.7:81 发现访问不了原因是[root@web01 conf.d]# pidof nginx7451 7437[root@web01 conf.d]# pidof nginx|xargs kill -9
方式三基于域名/etc/nginx/conf.d/www.name.com.conf
打开浏览器:www.name.com
/etc/nginx/conf.d/guy.name.com.conf
打开浏览器:guy.name.com
[root@web01 conf.d]# vim default.conf server { listen 80; server_name www.zhp.com; [root@web01 conf.d]# vim game.conf server { listen 80; server_name game..com; location / { root /code/h5_games; index index.html;}}~[root@web01 conf.d]# nginx -t[root@web01 conf.d]# systemctl restart nginx[root@web01 conf.d]# netstat -lnupt
etc 下有个host 打开
访问www.abc.com/就可以了