1.Nginx的简介:
1.nginx是一款轻量级的web服务器和反向代理服务器,也可以作为邮件代理服务器
2.占用内存少,并发处理能力强,cpu,内存等资源消耗非常低,运行非常稳定(Nginx官方测试为5万并发请求)
3.与Nginx的并发处理能力在同类型的web服务器有Apache(阿帕奇,世界使用排名第一的web服务器软件),Lighttpd(德国的),Tengine(阿里巴巴的)
4.Nginx的并发处理能力在同类型的Web服务器中表现极好,在全世界范围内大量网站使用了nginx,国内的互联网中也大量使用了Nginx,比如:淘宝,新浪,网易,搜狐,美团
5.Nginx是免费开源的,同时也有收费的商业版本,商业版本提供了性能优化,紧急问题处理等技术支持
6.Nginx是由俄罗斯人伊戈尔·赛索耶夫,采用C语言开发编写的
2.Nginx的作用:
- 负载均衡
- 反向代理
- 静态网站部署
- 动静分离
- 虚拟主机
3.反向代理
- 是指以代理服务器来接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器
- 客户只需要发送请求到代理服务器,代理服务器会将请求转发给内部的服务器去处理,处理完毕之后将结果返回给客户
- 整个过程中客户和实际处理服务器是不会直接建立连接的
- 反向代理隐藏了真正的服务端,就像使用百度,背后有成千上万台服务器,我们并不知道那一台为我们服务,我们只知道这个代理服务器,它会把我们的请求转发到为我们提供数据的服务器
正向代理:
1.正向代理类似一个跳板机,代理访问外部资源
2. 比如,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,
这个代理服务器,他能访问那个我不能访问网站,于是我先连上代理服务器,
告诉他我需要那个无法访问的网站的内容,代理服务器去取,然后返回给我
nginx不处理用户请求,只是接受到请求以后将请求转发给后台的Tomcat(是一个免费的开源的轻量级Web 应用服务器),由后台的Tomcat来处理我们的用户请求,这时ngxin就是反向代理
正向代理的对象是客户端,反向代理的对象是服务端
4.Linux命令的使用:
1.yum install -y wget //安装wget,yum是Shell前端软件包管理器
2.wget http://nginx.org/download/nginx-1.18.0.tar.gz //安装nginx软件
3.grep查找命令,查找文件里符合条件的字符串或者指定文件
grep test *file //查找有file字样的文件中包含test字符串的文件,并打印该字符串的行
grep 文件名 //查找文件
4.pwd //查看当前目录
5.cd 目录名路径/文件名路径 //切换到目录或文件名
6.ll命令就是 ls -l 的缩写,
7.mkdir soft //创建名字为soft的目录
8.rz //上传文件到服务器, rz - y //上传文件,如果文件已经存在就覆盖
9. sz 文件名 //下载文件
10.tar 是解压/压缩命令 -x:解压, -z:是带有gzip属性的,-f:解压后的名字,-v是显示所有过程
tar -zxvf 文件名
11.ssh root@ip //远程连接服务器 //root:远程linux系统登录用户名,ip:远程linux系统IP地址
12.make //编译
13.rm -rf 文件名/目录 //强制删除目录或文件
14.kill 主进程号 //关闭nginx
15.ps -ef | grep nginx //ps将某个进程显示出来,grep是查找,中间管道符,把前面命令的输出,作为后面命令的输入, 查看nginx进程
16.yum install -y lrzsz //如果没有rz功能需要下载
1.wget是Linux的一个下载文件工具,是开源软件,支持断点下载
2. yum install -y/-q 软件路径 //-y安装过程提示,-q不显示安装过程
5.Nginx环境搭建
1.免费的开源官网:http://nginx.org
2.Nginx有Windows版本和Linux版本,但更推荐使用Linux
3.我们习惯将下载或者上传的安装文件放在/home/soft/目录下
4.我们一般在windows下载Linux版的nginx然后再上传到Linux
5.1使用Xshell与服务器进行连接
然后执行上方的一次性安装命令:
这里以前安装过了,才会出现这个页面
5.2安装前的准备:
Nginx的安装需要确定Linux安装相关的几个库,否则配置和编译会出现错误,具体检查安装过程为:
-
gcc编译器是否安装
- 检查是否安装:yum list installed | grep gcc
- 执行安装yum install gcc -y
-
openssl库是否安装
- 检查是否安装:yum list installed | grep openssl
- 执行安装yum install openssl openssl-devel -y
-
pcre库是否安装
- 检查是否安装:yum list installed | grep pcre
- 执行安装:yum install pcre pcre-devel -y
-
zlib库是否安装
- 检查是否安装:yum list installed | grep zlib
- 执行安装:yum install zlib zlib-devel -y
一次性安装: 执行如下:
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
5.3正式安装:
1.先创建目录soft:用于存放下载的软件
2.上传文件,将文件上传到soft目录中
3.然后解压文件 tar -zxvf 文件名
4.进入这个解压的文件:cd nginx文件名
- 配置nginx安装前路径为:/usr/local/nginx
./configure --prefix=/usr/local/nginx
6.然后执行make命令进行编译:
7.然后执行make install 进行安装:
8.进入文件/usr/local下的nginx文件中的conf文件
9.然后对nginx.conf文件进行配置,就可以部署静态网站
一般配置的话我们先下载下来,然后在windows中进行配置,之后再上传
nginx中的 html文件中有两个html分别是出现错误时转发到50x.html,显示错误信息
index.html是欢迎首页
这是欢迎首页
10.启动nginx,在nginx/下的sbin目录中,执行./nginx
此时端口冲突,需要关闭nginx,用配置文件启动nginx
ps -ef | grep nginx //查看nginx是否启动
可以不用切换到sbin目录,只要想办法执行sbin目录下的nginx就可以了
11.用配置文件启动nginx,
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf//nginx.conf
这里已经启动过了,其中-c是指定配置文件
12.重启nginx
/usr/local/nginx/sbin/nginx -s reload
此时如果配置完成网站就可以打开了
5.4配置静态网站
检查配置文件是否正确
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
查看nginx版本:
/usr/local/nginx/sbin/nginx -v //显示nginx版本
/usr/local/nginx/sbin/nginx -V //显示nginx版本,编译器版本和配置参数
nginx核心配置文件:
# 配置work进程运行用户,nobody也是一个Linux用户,一般用于启动程序,没有密码
#user nobody;
# 配置工作进程数目,根据硬件调整(一般等于CPU的总核数或总核数的两倍)
worker_processes 1;
# 配置全局错误日志及类型 [debug | info | notice | warn | error | crit ]
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
# 指定 pid 存放的路径
#pid logs/nginx.pid;#配置工作模式模式和连接数
events {
# 单个woker进程支持的最大连接数,nginx支持的总连接数就等于,worker_processes*worker_connections
#worker_connections取值上限为65535worker_connections 1024;
}#配置http服务器,利用它的反向代理功能提供负载均衡的支持
http {
#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型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 日志及存放路径,并使用上面定义的main日志格式#access_log logs/access.log main;sendfile on; #开启高效文件传输模式#tcp_nopush on; #防止网络阻塞#keepalive_timeout 0;keepalive_timeout 65; #长链接超时时间,单位是秒#gzip on; #开启gzip压缩输出## 定义作为web服务器的相关属性 可以有多个server {# 监听的端口listen 80;# 域名server_name http://www.heptagram.ltd;# 字符集采用utf-8或者gbk#charset koi8-r;#access_log logs/host.access.log main;# 定义一个虚拟主机的属性,所有的web服务必须定义成一个虚拟主机#/指服务器ip或者域名location / {# root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的HTML目录root /opt/www/wz;#配置首页文件的名称index yanhua.html yanhua.htm;}#error_page 404 /404.html;# redirect server error pages to the static page /50x.html#error_page 500 502 503 504 /50x.html;#精确匹配location = /50x.html {root html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {# proxy_pass http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {# root html;# fastcgi_pass 127.0.0.1:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {# deny all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {# listen 8000;# listen somename:8080;# server_name somename alias another.alias;# location / {# root html;# index index.html index.htm;# }#}# HTTPS server##server {# listen 443 ssl;# server_name localhost;# ssl_certificate cert.pem;# ssl_certificate_key cert.key;# ssl_session_cache shared:SSL:1m;# ssl_session_timeout 5m;# ssl_ciphers HIGH:!aNULL:!MD5;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}