其实Nginx 入门指南的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享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的配置文件的解析
「配置文件:」
- #user nobody;
- #工作的线程(4核8线程那么下面就设置成8 物理硬件有关)
- worker_processes 1;
- #全局的错误日志存放的地方
- #error_log logs/error.log;
- #全局错误日志存放的地方 后面的notice表示的是输出错误日志的格式
- #error_log logs/error.log notice;
- #error_log logs/error.log info;
- #nginx进程号存放的地方
- #pid logs/nginx.pid;
- #最大的连接数(这个也跟硬件是有关系的)
- events {
- worker_connections 1024;
- }
- #下面就是跟HTTP请求有关系的了
- 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"';
- #表示的是每一次请求的日志记录 格式就是上面的main格式
- access_log logs/access.log main;
- #是否可以发送文件
- sendfile on;
- #tcp_nopush on;
- #这个是双活的超时的时间
- #keepalive_timeout 0;
- keepalive_timeout 65;
- #是否打开文件的压缩
- #gzip on;
- #虚拟一个主机
- #负载均衡的配置
- upstream qianyu {
- ip_hash;
- server 10.7.182.110:8080;
- server 10.7.182.87:8080;
- }
- #server {
- # listen 90;
- # server_name localhost;
- # location / {
- # root qianyu;
- # index qianyu.html;
- # }
- #做一个反向代理
- #表示的是 如果你访问的后缀是 .jpg结尾的话那么 就访问下面的另外的服务器
- # location ~ \.jpg$ {
- # proxy_pass http://10.7.182.110:8080;
- # }
- #下面要演示一个负载均衡的例子
- #location ~ \.jpg$ {
- # proxy_pass http://qianyu;
- #}
- #}
- #虚拟一个动静分离的机器
- 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;
- }
- }
- #虚拟了服务器
- server {
- #端口是 80
- listen 80;
- #这个表示的是虚拟服务器默认访问的是本机
- server_name localhost;
- #这个是虚拟服务器的编码
- #charset koi8-r;
- #当前服务器的日志的存储的地方
- #access_log logs/host.access.log main;
- #做了一个地址的映射
- location / {
- root html;
- index index.html index.htm;
- }
- #如果报404的时候访问的页面
- #error_page 404 /404.html;
- # redirect server error pages to the static page /50x.html
- #报错50开头的是 就访问50x.html
- error_page 500 502 503 504 /50x.html;
- #下面对50x.html又做了一个映射 就访问根目录下的html中的 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;
- # }
- #}
- }
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目录下
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8" />
- <title></title>
- <link rel="stylesheet" type="text/css" href="/css/main.css"/>
- <script src="/js/main.js" type="text/javascript" charset="utf-8"></script>
- </head>
- <body>
- <img src="/img/bbb.jpg"/>
- <br />
- <a href="/Dynamic_Resource/qianyu.action">点击我访问动态资源</a>
- </body>
- </html>
- 将图片放到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 入门指南的信息别忘了在本站进行查找哦。
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6864.html
用户评论
学习nginx真的太重要了,配置个网站什么的都方便很多
有10位网友表示赞同!
一直在想找个时间研究一下nginx,现在看到这个标题正好合适
有15位网友表示赞同!
51CTO的博客质量一直都很高,这次这篇文章应该也有很多干货
有12位网友表示赞同!
搞懂nginx确实能提升服务器管理能力,一定要好好学习
有7位网友表示赞同!
看标题感觉这篇分析比较全面,可以让我对nginx有一个系统的认识
有8位网友表示赞同!
对于想从事web开发的人来说,nginx太重要了,希望这篇文章能让我入门faster
有17位网友表示赞同!
很多时候网页加载慢都是nginx的问题,学习它应该能让网站跑更快
有11位网友表示赞同!
以前只是知道nginx的名字,还没真正了解过它的功能,这篇文章很适合我
有5位网友表示赞同!
看标题感觉涵盖的范围广,希望能从这篇文章里学到很多 nginx 常用技巧
有11位网友表示赞同!
Nginx配置确实有点复杂,希望这篇文章能给我一些清晰的解释和指导
有12位网友表示赞同!
学习一个新技术总是离不开权威的文章,51CTO的博客就是很好的选择
有11位网友表示赞同!
了解nginx可以让我更好地维护网站服务器,提高工作的效率
有18位网友表示赞同!
现在很多web应用都用到nginx,掌握它真是职场必备技能
有7位网友表示赞同!
看标题感觉很全面,应该能涵盖nginx的基础概念和高级用法
有6位网友表示赞同!
学习nginx的最佳途径就是实践,这篇文章或许能让我的实践更有目标性的
有10位网友表示赞同!
之前遇到过很多nginx使用问题,希望这篇文章能解决我对它的疑惑
有13位网友表示赞同!
这篇文章的讲解应该很入门友好,适合新手学习 nginx
有10位网友表示赞同!
51CTO的文章质量都很高,这次也不例外,相信这篇nginx解析会很棒!
有6位网友表示赞同!
对web开发很有兴趣的人一定不能错过这篇文章!
有15位网友表示赞同!
期待看看这篇文章能分享哪些干货!
有6位网友表示赞同!