第157天学习打卡(Nginx)
Posted doudoutj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第157天学习打卡(Nginx)相关的知识,希望对你有一定的参考价值。
nginx
但是慢慢的,使用平台的用户越来越多了,并发量慢慢增大了,这时候一台服务器满足不了我们的需求了
于是我们横向扩展,又增加了服务器。这个时候几个项目在不同的服务器上,用户要访问,就需要增加一个代理服务器,通过代理服务器来帮我们转发和处理请求。
我们希望这个代理服务器可以帮助我们接收用户的请求,然后将用户的请求按照规则帮我们转发到不同的服务器节点上。这个过程用户是无感知的,用户并不知道哪个服务器返回的结果,我们希望他可以按照服务器的性能提供不同的权重选择。保证最佳体验,所以我们使用Nginx.
什么是Nginx
Nginx(engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务。Nginx的特点是占用内存少,并发能力强,事实上nginx的并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度,京东,新浪,网易,腾讯,淘宝等。
Nginx是一个安装非常简单,配置文件十分简洁(还能支持perl语法)、Bug非常少的服务。Nginx启动特别容易,并且可以做到7*24小时不间断运行,即使运行数个月也不需要重新启动。还能够不间断服务的情况下进行软件版本的升级。
Nginx代码完全用C语言从头写成。官方数据测试表明能够支持高达50000个并发连接数的响应。
Nginx作用
Http代理,反向代理:作为web服务器最常用的功能之一,尤其是反向代理。
正向代理:
Nginx提供的负载均衡策略有两种:内置策略和扩展策略,内置策略为轮询,加权轮询,lp hash。扩展策略:只有你想不到,没有他做不到的。
轮询:
iphash对客户端请求的ip进行hash操作,然后根据hash结果将同提供客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
动静分离,在我们的软件开发中,有些请求时需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等文件),这些不需要经过后台处理的文件又称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。
使用Nginx大大提高了网站的响应速度,优化了用户体验,让网站的健壮性更上一层楼。
Nginx安装
Windows下安装
网页访问:
Linux下安装
1.卸载linux里面的Nginx
rm -rf /etc/nginx/
rm -rf /usr/sbin/nginx
rm /usr/share/man/man1/nginx.1.gz
apt-get remove nginx*
[root@stor01 ~]# whereis nginx
nginx: /usr/bin/nginx
[root@stor01 ~]# cd /usr/bin
[root@stor01 bin]# ls
[root@stor01 bin]# rm -rf /usr/bin/nginx
[root@stor01 bin]# ls
nginx:[root@stor01 /]# rm -rf /stor01/nginx
[root@stor01 /]# cd ~
[root@stor01 ~]# whereis nginx
nginx:[root@stor01 ~]# cd ~
[root@stor01 ~]# rm -rf /usr/sbin/nginx
[root@stor01 ~]# rm /usr/share/man/man1/nginx.1.gz
rm: cannot remove ‘/usr/share/man/man1/nginx.1.gz’: No such file or directory
[root@stor01 /]# apt-get remove nginx*
-bash: apt-get: command not found
[root@stor01 /]# nginx
-bash: /usr/bin/nginx: No such file or directory
[root@stor01 ~]# ls
install.sh kuangstudy.txt nginx-1.20.1.tar.gz wget-log
[root@stor01 ~]# tar -zxvf nginx-1.20.1.tar.gz #解压
[root@stor01 ~]# cd nginx-1.20.1
[root@stor01 nginx-1.20.1]# ll
total 812
drwxr-xr-x 6 mysql mysql 4096 Jun 14 20:20 auto
-rw-r--r-- 1 mysql mysql 311503 May 25 20:35 CHANGES
-rw-r--r-- 1 mysql mysql 475396 May 25 20:35 CHANGES.ru
drwxr-xr-x 2 mysql mysql 4096 Jun 14 20:20 conf
-rwxr-xr-x 1 mysql mysql 2590 May 25 20:35 configure
drwxr-xr-x 4 mysql mysql 4096 Jun 14 20:20 contrib
drwxr-xr-x 2 mysql mysql 4096 Jun 14 20:20 html
-rw-r--r-- 1 mysql mysql 1397 May 25 20:35 LICENSE
drwxr-xr-x 2 mysql mysql 4096 Jun 14 20:20 man
-rw-r--r-- 1 mysql mysql 49 May 25 20:35 README
drwxr-xr-x 9 mysql mysql 4096 Jun 14 20:20 src
[root@stor01 nginx-1.20.1]# ./configure
[root@stor01 nginx-1.20.1]# make
[root@stor01 nginx-1.20.1]# make install
[root@stor01 nginx-1.20.1]# whereis nginx
nginx: /usr/local/nginx
[root@stor01 nginx-1.20.1]# cd /usr/local/nginx/
[root@stor01 nginx]# ll
total 16
drwxr-xr-x 2 root root 4096 Jun 14 20:23 conf
drwxr-xr-x 2 root root 4096 Jun 14 20:23 html
drwxr-xr-x 2 root root 4096 Jun 14 20:23 logs
drwxr-xr-x 2 root root 4096 Jun 14 20:23 sbin
[root@stor01 nginx]# cd sbin/
[root@stor01 sbin]# ll
total 7592
-rwxr-xr-x 1 root root 3883600 Jun 14 20:23 nginx
-rwxr-xr-x 1 root root 3883600 Jun 14 20:23 nginx.old
遇到的问题:
[root@stor01 sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@stor01 sbin]# netstat -ntlp|grep 80
tcp 0 0 127.0.0.1:6380 0.0.0.0:* LISTEN 5675/redis-server 1
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1226/nginx: master
#这两个命令并没有起作用
[root@stor01 sbin]# kill -9 5675
[root@stor01 sbin]# kill -9 1226
解决办法:
[root@stor01 sbin]# ./nginx
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
[root@stor01 sbin]# killall -9 nginx
[root@stor01 sbin]# ./nginx
[root@stor01 sbin]# cd ..
[root@stor01 nginx]# ll
total 36
drwx------ 2 nobody root 4096 Jun 14 20:25 client_body_temp
drwxr-xr-x 2 root root 4096 Jun 14 20:23 conf
drwx------ 2 nobody root 4096 Jun 14 20:25 fastcgi_temp
drwxr-xr-x 2 root root 4096 Jun 14 20:23 html
drwxr-xr-x 2 root root 4096 Jun 14 20:34 logs
drwx------ 2 nobody root 4096 Jun 14 20:25 proxy_temp
drwxr-xr-x 2 root root 4096 Jun 14 20:23 sbin
drwx------ 2 nobody root 4096 Jun 14 20:25 scgi_temp
drwx------ 2 nobody root 4096 Jun 14 20:25 uwsgi_temp
[root@stor01 nginx]# cd conf/
[root@stor01 conf]# ll
total 68
-rw-r--r-- 1 root root 1077 Jun 14 20:23 fastcgi.conf
-rw-r--r-- 1 root root 1077 Jun 14 20:23 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 Jun 14 20:23 fastcgi_params
-rw-r--r-- 1 root root 1007 Jun 14 20:23 fastcgi_params.default
-rw-r--r-- 1 root root 2837 Jun 14 20:23 koi-utf
-rw-r--r-- 1 root root 2223 Jun 14 20:23 koi-win
-rw-r--r-- 1 root root 5231 Jun 14 20:23 mime.types
-rw-r--r-- 1 root root 5231 Jun 14 20:23 mime.types.default
-rw-r--r-- 1 root root 2656 Jun 14 20:23 nginx.conf
-rw-r--r-- 1 root root 2656 Jun 14 20:23 nginx.conf.default
-rw-r--r-- 1 root root 636 Jun 14 20:23 scgi_params
-rw-r--r-- 1 root root 636 Jun 14 20:23 scgi_params.default
-rw-r--r-- 1 root root 664 Jun 14 20:23 uwsgi_params
-rw-r--r-- 1 root root 664 Jun 14 20:23 uwsgi_params.default
-rw-r--r-- 1 root root 3610 Jun 14 20:23 win-utf
[root@stor01 conf]# cat nginx.conf
在浏览器上面访问 阿里云公网ip:80
Nginx常用命令:
cd /usr/local/nginx/sbin/
./nginx 启动
./nginx -s stop 停止
./nginx -s quit 安全退出
./nginx -s reload 重新加载配置文件
ps aux|grep nginx 查看nginx进程
[root@stor01 conf]# cd ..
[root@stor01 nginx]# cd sbin/
[root@stor01 sbin]# ./nginx -s stop 停止
[root@stor01 sbin]# ./nginx 启动
[root@stor01 sbin]# cd ..
[root@stor01 nginx]# cd conf/
[root@stor01 conf]# vim nginx.conf #这里面修改监听端口进行测试
[root@stor01 conf]# cd ..
[root@stor01 nginx]# cd sbin
[root@stor01 sbin]# ./nginx -s reload
[root@stor01 sbin]# cd ..
[root@stor01 nginx]# cd conf/
[root@stor01 conf]# vim nginx.conf#这里面修改监听端口进行测试
[root@stor01 conf]# cd ..
[root@stor01 nginx]# cd sbin/
[root@stor01 sbin]# ./nginx -s reload
[root@stor01 sbin]#
以上是关于第157天学习打卡(Nginx)的主要内容,如果未能解决你的问题,请参考以下文章
第149天学习打卡(Kubernetes 部署nginx 部署Dashboard)