本文目录
显示
1.
1. Nginx的概念?
2.
2、Nginx的安装
3.
4、实现Nginx下的反向代理
4.
5、实现Nginx下的负载均衡
5.
6、实现Nginx下的动静分离
Nginx是一个http服务器,是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试Nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。本文将为大家详细介绍关于Nginx的原理以及在应用场景下的相关解析。
1. Nginx的概念?
「什么是Nginx呢:」
- Nginx是一个基于HTTP的反向代理服务器,也是一个基于IMAP/POP3/SMTP服务邮件服务器
- 反向代理服务器:现在我们A需要访问的目标B服务器的10.7.182.100,我要访问这个B服务器上的资源,现在如果使用了Nginx之后,我可以通过Nginx服务器从而达到访问10.7.182.100这个服务器的目的
- IMAP/POP/SMTP:这三个是邮件的传输协议
- 邮件服务器:发送邮件接收邮件
- Web服务器:本身是一个Web服务器的软件,类似于Tomcat这种Web服务的软件
「Nginx能干什么呢:」
- 可以作为Web服务器
- 可以作为邮件服务器
- 可以作为反向代理的服务器
- 动静分离(就是将动态资源和静态资源分隔开)
- 可以实现负载均衡
2、Nginx的安装
「Nginx安装步骤:」
第一步:下载我们的nginx 这里以1.6.2版本为例
第二步:共享安装文件到我们的linux上面
第三步:将文件拷贝到/usr/local下面
第四步:安装 tar -zxvf xxxx.tar.gz
第五步:下载所需要的依赖库 yum install pcre yum install pcre-devel yum install zlib yum install zlib-devel
第六步:进行config的配置
cd nginx-1.6.2 && ./configure –prefix=/usr/local/nginx
第七步:安装
make && make install
第八步:启动nginx
/usr/local/nginx/sbin/nginx
关闭: …. -s stop -s reload
查看端口是否有问题
netstat -tunpl |grep 80
浏览器进行验证没问题就可以
3、Nginx的配置文件的解析
「配置文件:」
#usernobody; #工作的线程(4核8线程那么下面就设置成8物理硬件有关) worker_processes1; #全局的错误日志存放的地方 #error_loglogs/error.log; #全局错误日志存放的地方后面的notice表示的是输出错误日志的格式 #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; #nginx进程号存放的地方 #pidlogs/nginx.pid; #最大的连接数(这个也跟硬件是有关系的) events{ worker_connections1024; } #下面就是跟HTTP请求有关系的了 http{ #表示的是当前服务器支持的类型 includemime.types; #默认传输的数据类型是流 default_typeapplication/octet-stream; #声明了一种日志格式这种日志格式的名字叫做main log_formatmain\'$remote_addr-$remote_user[$time_local]\"$request\"\' \'$status$body_bytes_sent\"$http_referer\"\' \'\"$http_user_agent\"\"$http_x_forwarded_for\"\'; #表示的是每一次请求的日志记录格式就是上面的main格式 access_loglogs/access.logmain; #是否可以发送文件 sendfileon; #tcp_nopushon; #这个是双活的超时的时间 #keepalive_timeout0; keepalive_timeout65; #是否打开文件的压缩 #gzipon; #虚拟一个主机 #负载均衡的配置 upstreamqianyu{ ip_hash; server10.7.182.110:8080; server10.7.182.87:8080; } #server{ #listen90; #server_namelocalhost; #location/{ #rootqianyu; #indexqianyu.html; #} #做一个反向代理 #表示的是如果你访问的后缀是.jpg结尾的话那么就访问下面的另外的服务器 #location~.jpg${ #proxy_passhttp://10.7.182.110:8080; #} #下面要演示一个负载均衡的例子 #location~.jpg${ #proxy_passhttp://qianyu; #} #} #虚拟一个动静分离的机器 server{ listen9999; server_namelocalhost; #表示的是动态资源访问的机器 location/{ proxy_passhttp://10.7.182.54:8080; } #表示的是非css和js文件访问的地址 location~.*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { root/usr/local/webapp; expires30d; } #表示的是css和js的访问地址 location~.*.(js|css)?$ { root/usr/local/webapp; expires1h; } } #虚拟了服务器 server{ #端口是80 listen80; #这个表示的是虚拟服务器默认访问的是本机 server_namelocalhost; #这个是虚拟服务器的编码 #charsetkoi8-r; #当前服务器的日志的存储的地方 #access_loglogs/host.access.logmain; #做了一个地址的映射 location/{ roothtml; indexindex.htmlindex.htm; } #如果报404的时候访问的页面 #error_page404/404.html; #redirectservererrorpagestothestaticpage/50x.html #报错50开头的是就访问50x.html error_page500502503504/50x.html; #下面对50x.html又做了一个映射就访问根目录下的html中的50x.html location=/50x.html{ roothtml; } #proxythePHPscriptstoApachelisteningon127.0.0.1:80 # #location~.php${ #proxy_passhttp://127.0.0.1; #} #passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000 # #location~.php${ #roothtml; #fastcgi_pass127.0.0.1:9000; #fastcgi_indexindex.php; #fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name; #includefastcgi_params; #} #denyaccessto.htaccessfiles,ifApache\'sdocumentroot #concurswithnginx\'sone # #location~/.ht{ #denyall; #} } #anothervirtualhostusingmixofIP-,name-,andport-basedconfiguration # #server{ #listen8000; #listensomename:8080; #server_namesomenamealiasanother.alias; #location/{ #roothtml; #indexindex.htmlindex.htm; #} #} #HTTPSserver # #server{ #listen443ssl; #server_namelocalhost; #ssl_certificatecert.pem; #ssl_certificate_keycert.key; #ssl_session_cacheshared:SSL:1m; #ssl_session_timeout5m; #ssl_ciphersHIGH:!aNULL:!MD5; #ssl_prefer_server_cipherson; #location/{ #roothtml; #indexindex.htmlindex.htm; #} #} }
4、实现Nginx下的反向代理
「做一个反向代理:」
表示的是如果你访问的后缀是 .jpg结尾的话,那么就访问下面的另外的服务器
location ~ .jpg$ { proxy_pass http://10.7.182.110:8080; }
5、实现Nginx下的负载均衡
「第一种策略:默认是轮循的策略:」
配置upstream upstream qianyu { server 10.7.182.110:8080; server 10.7.182.87:8080; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
「第二种策略:权重(weight):」
#负载均衡的配置 upstream qianyu { server 10.7.182.110:8080 weight=2; server 10.7.182.87:8080 weight=1; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
「第三种策略:IPHash的使用:」
#负载均衡的配置 upstream qianyu { ip_hash; server 10.7.182.110:8080; server 10.7.182.87:8080; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
6、实现Nginx下的动静分离
「动静分离:」
- 简单的来说就是将动态资源和静态资源给分隔开
- 静态资源放到Nginx服务器上
- 动态资源放到Tomcat服务器上
Jpg html css png gif ....静态资源 ---->放到Nginx服务器上 .action结尾的都是动态的资源 ------------------------->放到Tomcat的服务器上
「动静分离的实现:」
- 在/usr/local目录下创建webapp文件夹
- 在webapp目录下创建css、html、js、img文件夹
- 编写HTML的内容并将html文件放到webapp目录下
点击我访问动态资源
- 将图片放到img目录下,将css放到css目录下,将js文件放到js的目录下
- 编写动态资源的这个工程
package com.qy.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class qianyuServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\"text/html;charset=utf-8\"); PrintWriter writer=response.getWriter(); writer.write(\"this is dynamic resource test\"); writer.flush(); writer.close(); } }
- 编写配置文件/conf/nginx.xml文件
#虚拟一个动静分离的机器 server { listen 9999; server_name localhost; #表示的是动态资源访问的机器 location / { proxy_pass http://10.7.182.54:8080; } #表示的是非 css和js文件访问的地址 location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { root /usr/local/webapp; expires 30d; } #表示的是css和js的访问地址 location ~ .*.(js|css)?$ { root /usr/local/webapp; expires 1h; } }
- 测试
7、虚拟主机
「虚拟主机配置:」
server { listen 90; server_name localhost; location / { root qianyu; index qianyu.html; } #做一个反向代理 #表示的是 如果你访问的后缀是 .jpg结尾的话那么 就访问下面的另外的服务器 location ~ .jpg$ { proxy_pass http://10.7.182.110:8080; } }
本篇关于Nginx的介绍就先到这里结束了,后续会出�反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试Nginx能够支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。本文将为大家详细介绍关于Nginx的原理以及在应用场景下的相关解析。
1. Nginx的概念?
「什么是Nginx呢:」
- Nginx是一个基于HTTP的反向代理服务器,也是一个基于IMAP/POP3/SMTP服务邮件服务器
- 反向代理服务器:现在我们A需要访问的目标B服务器的10.7.182.100,我要访问这个B服务器上的资源,现在如果使用了Nginx之后,我可以通过Nginx服务器从而达到访问10.7.182.100这个服务器的目的
- IMAP/POP/SMTP:这三个是邮件的传输协议
- 邮件服务器:发送邮件接收邮件
- Web服务器:本身是一个Web服务器的软件,类似于Tomcat这种Web服务的软件
「Nginx能干什么呢:」
- 可以作为Web服务器
- 可以作为邮件服务器
- 可以作为反向代理的服务器
- 动静分离(就是将动态资源和静态资源分隔开)
- 可以实现负载均衡
2、Nginx的安装
「Nginx安装步骤:」
第一步:下载我们的nginx 这里以1.6.2版本为例
第二步:共享安装文件到我们的linux上面
第三步:将文件拷贝到/usr/local下面
第四步:安装 tar -zxvf xxxx.tar.gz
第五步:下载所需要的依赖库 yum install pcre yum install pcre-devel yum install zlib yum install zlib-devel
第六步:进行config的配置
cd nginx-1.6.2 && ./configure –prefix=/usr/local/nginx
第七步:安装
make && make install
第八步:启动nginx
/usr/local/nginx/sbin/nginx
关闭: …. -s stop -s reload
查看端口是否有问题
netstat -tunpl |grep 80
浏览器进行验证没问题就可以
「配置文件:」
#usernobody; #工作的线程(4核8线程那么下面就设置成8物理硬件有关) worker_processes1; #全局的错误日志存放的地方 #error_loglogs/error.log; #全局错误日志存放的地方后面的notice表示的是输出错误日志的格式 #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; #nginx进程号存放的地方 #pidlogs/nginx.pid; #最大的连接数(这个也跟硬件是有关系的) events{ worker_connections1024; } #下面就是跟HTTP请求有关系的了 http{ #表示的是当前服务器支持的类型 includemime.types; #默认传输的数据类型是流 default_typeapplication/octet-stream; #声明了一种日志格式这种日志格式的名字叫做main log_formatmain\'$remote_addr-$remote_user[$time_local]\"$request\"\' \'$status$body_bytes_sent\"$http_referer\"\' \'\"$http_user_agent\"\"$http_x_forwarded_for\"\'; #表示的是每一次请求的日志记录格式就是上面的main格式 access_loglogs/access.logmain; #是否可以发送文件 sendfileon; #tcp_nopushon; #这个是双活的超时的时间 #keepalive_timeout0; keepalive_timeout65; #是否打开文件的压缩 #gzipon; #虚拟一个主机 #负载均衡的配置 upstreamqianyu{ ip_hash; server10.7.182.110:8080; server10.7.182.87:8080; } #server{ #listen90; #server_namelocalhost; #location/{ #rootqianyu; #indexqianyu.html; #} #做一个反向代理 #表示的是如果你访问的后缀是.jpg结尾的话那么就访问下面的另外的服务器 #location~.jpg${ #proxy_passhttp://10.7.182.110:8080; #} #下面要演示一个负载均衡的例子 #location~.jpg${ #proxy_passhttp://qianyu; #} #} #虚拟一个动静分离的机器 server{ listen9999; server_namelocalhost; #表示的是动态资源访问的机器 location/{ proxy_passhttp://10.7.182.54:8080; } #表示的是非css和js文件访问的地址 location~.*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { root/usr/local/webapp; expires30d; } #表示的是css和js的访问地址 location~.*.(js|css)?$ { root/usr/local/webapp; expires1h; } } #虚拟了服务器 server{ #端口是80 listen80; #这个表示的是虚拟服务器默认访问的是本机 server_namelocalhost; #这个是虚拟服务器的编码 #charsetkoi8-r; #当前服务器的日志的存储的地方 #access_loglogs/host.access.logmain; #做了一个地址的映射 location/{ roothtml; indexindex.htmlindex.htm; } #如果报404的时候访问的页面 #error_page404/404.html; #redirectservererrorpagestothestaticpage/50x.html #报错50开头的是就访问50x.html error_page500502503504/50x.html; #下面对50x.html又做了一个映射就访问根目录下的html中的50x.html location=/50x.html{ roothtml; } #proxythePHPscriptstoApachelisteningon127.0.0.1:80 # #location~.php${ #proxy_passhttp://127.0.0.1; #} #passthePHPscriptstoFastCGIserverlisteningon127.0.0.1:9000 # #location~.php${ #roothtml; #fastcgi_pass127.0.0.1:9000; #fastcgi_indexindex.php; #fastcgi_paramSCRIPT_FILENAME/scripts$fastcgi_script_name; #includefastcgi_params; #} #denyaccessto.htaccessfiles,ifApache\'sdocumentroot #concurswithnginx\'sone # #location~/.ht{ #denyall; #} } #anothervirtualhostusingmixofIP-,name-,andport-basedconfiguration # #server{ #listen8000; #listensomename:8080; #server_namesomenamealiasanother.alias; #location/{ #roothtml; #indexindex.htmlindex.htm; #} #} #HTTPSserver # #server{ #listen443ssl; #server_namelocalhost; #ssl_certificatecert.pem; #ssl_certificate_keycert.key; #ssl_session_cacheshared:SSL:1m; #ssl_session_timeout5m; #ssl_ciphersHIGH:!aNULL:!MD5; #ssl_prefer_server_cipherson; #location/{ #roothtml; #indexindex.htmlindex.htm; #} #} }
4、实现Nginx下的反向代理
「做一个反向代理:」
表示的是如果你访问的后缀是 .jpg结尾的话,那么就访问下面的另外的服务器
location ~ .jpg$ { proxy_pass http://10.7.182.110:8080; }
5、实现Nginx下的负载均衡
「第一种策略:默认是轮循的策略:」
配置upstream upstream qianyu { server 10.7.182.110:8080; server 10.7.182.87:8080; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
「第二种策略:权重(weight):」
#负载均衡的配置 upstream qianyu { server 10.7.182.110:8080 weight=2; server 10.7.182.87:8080 weight=1; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
「第三种策略:IPHash的使用:」
#负载均衡的配置 upstream qianyu { ip_hash; server 10.7.182.110:8080; server 10.7.182.87:8080; } 配置负载均衡 location ~ .jpg$ { proxy_pass http://qianyu; }
6、实现Nginx下的动静分离
「动静分离:」
- 简单的来说就是将动态资源和静态资源给分隔开
- 静态资源放到Nginx服务器上
- 动态资源放到Tomcat服务器上
Jpg html css png gif ....静态资源 ---->放到Nginx服务器上 .action结尾的都是动态的资源 ------------------------->放到Tomcat的服务器上
「动静分离的实现:」
- 在/usr/local目录下创建webapp文件夹
- 在webapp目录下创建css、html、js、img文件夹
- 编写HTML的内容并将html文件放到webapp目录下
点击我访问动态资源
- 将图片放到img目录下,将css放到css目录下,将js文件放到js的目录下
- 编写动态资源的这个工程
package com.qy.servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class qianyuServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\"text/html;charset=utf-8\"); PrintWriter writer=response.getWriter(); writer.write(\"this is dynamic resource test\"); writer.flush(); writer.close(); } }
- 编写配置文件/conf/nginx.xml文件
#虚拟一个动静分离的机器 server { listen 9999; server_name localhost; #表示的是动态资源访问的机器 location / { proxy_pass http://10.7.182.54:8080; } #表示的是非 css和js文件访问的地址 location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { root /usr/local/webapp; expires 30d; } #表示的是css和js的访问地址 location ~ .*.(js|css)?$ { root /usr/local/webapp; expires 1h; } }
- 测试
7、虚拟主机
「虚拟主机配置:」
server { listen 90; server_name localhost; location / { root qianyu; index qianyu.html; } #做一个反向代理 #表示的是 如果你访问的后缀是 .jpg结尾的话那么 就访问下面的另外的服务器 location ~ .jpg$ { proxy_pass http://10.7.182.110:8080; } }
本篇关于Nginx的介绍就先到这里结束了,后续会出更多关于Nginx系列更多文章,谢谢大家支持!