ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Nginx的基本介绍

2020-03-24 22:54:38  阅读:128  来源: 互联网

标签:基本 nginx local 介绍 server Nginx html 服务器 root


1、nginx的基本概念     1)nginx是什么,做什么事情     2)反向代理     3)负载均衡     4)动静分离 2、nginx安装、常用命令和配置文件     1)在linux系统中安装nginx     2)nginx常用命令     3)nginx配置文件 3、nginx配置实例1-反向代理 4、nginx配置实例2-负载均衡 5、nginx配置实例3-动静分离 6、nginx配置高可用集群 7、nginx的原理     一、Nginx的基本概念 Nginx简介     1)Nginx(engine x)是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现最好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等       2)Nginx作为web服务器 nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等,但是不支持java程序。只能通过与tomcat配合完成。nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数     Nginx - 正向代理 Nginx不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能 正向代理:如果把局域网外的Internet想象成一个巨大的资源库,则局域网中的客户端要访问Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理 (在客户端(浏览器)配置代理服务器,通过代理服务器进行网站访问)       Nginx - 反向代理 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由于反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。   Nginx - 负载均衡 客户端发送多个请求到服务器,服务器处理请求,有一些可能要与数据库进行交互,服务器处理完毕后,再将结果返回客户端。(单一系统)   单个服务器解决不了,我们增加服务器数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。(负载均衡)   Nginx - 动静分离 为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。可以理解成使用Nginx处理静态页面,Tomcat处理动态页面,动静分离从目前实现角度来讲大致分为两种,一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案,另一种方法就是动态跟静态文件混合一起发布,通过nginx来分开。通过location指定不同的后缀名实现不同的请求转发。通过expires参数来设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。   Nginx - 常用操作命令
  • 查看nginx版本号
    [root@web ~]# /usr/local/nginx/sbin/nginx -v nginx version: nginx/1.12.2
  • 启动nginx
    /usr/local/nginx/sbin/nginx [root@web ~]# ps -ef | grep nginx root     10686     1  0 16:23 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx nginx    10687 10686  0 16:23 ?        00:00:00 nginx: worker proces  
  • 关闭nginx
/usr/local/nginx/sbin/nginx -s stop  
  • 重新加载nginx
/usr/local/nginx/sbin/nginx -s reload   Nginx - 配置文件
  1. nginx配置文件位置
    /usr/local/nginx/conf/  
  1. nginx配置文件组成
(1)nginx由三部分组成 第一部分:全局模块 #user  nobody; worker_processes  1;    -- nginx服务器并发处理服务的关键位置,worker_processes值越大,可以支持的并发处理量也越多,但是也受到硬件、软件等设备的制约   #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info;   #pid        logs/nginx.pid;   第二部分:events模块 主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时连接多个网络连接,选取哪种事件驱动模型来处理连接请求,每个worker process可以同时支持的最大连接数等   events {     worker_connections  1024;    -- nginx支持最大连接数 }     第三部分:http模块 http模块是nginx服务器中配置最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里,包括http全局块、server块 http全局块:配置的指令包括文引入、MIME-TYPE定义、日志定义、连接超时时间、单链接请求数上限等 server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本     1)全局server块     最常见的配置是虚拟主机的监听配置和虚拟主机的名称IP配置       2)location块     一个server块可以配置多个location块。     这块的主要作用是基于nginx服务器接收到的请求字符串(例如 server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如 前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等功能,还有许多第三模块的配置也在这里进行   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"';         #access_log  logs/access.log  main;         sendfile        on;     #tcp_nopush     on;         #keepalive_timeout  0;     keepalive_timeout  65;         #gzip  on;       server {         listen       80;         server_name  localhost;           #charset koi8-r;           #access_log  logs/host.access.log  main;             location / {             root   html;             index  index.html index.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;     #    }     #} }   Nginx配置实例 - 反向代理1 1、实现效果  1)打开浏览器,在浏览器上地址栏输入www.123.com,跳转到linux系统tomcat主页   2、准备工作  1)在linux系统安装tomcat,使用默认端口8080     具体如下: 第一:上传tomcat和JDK安装包 第二:解压tomcat和JDK安装包并移动到//usr/local目录下 第三:编辑/etc/profile文件 [root@web ~]# vim  /etc/profile #JDK-SETTING export JAVA_HOME=/usr/local/jdk export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=:$JAVA_HOME/bin:$JAVA_HOME/bin:$PATH   [root@web local]# source /etc/profile [root@web local]# java -version java version "1.7.0_80" Java(TM) SE Runtime Environment (build 1.7.0_80-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)   第四:启动tomcat [root@web local]# /usr/local/tomcat/bin/startup.sh [root@web local]# netstat -antp | grep java tcp6       0      0 127.0.0.1:8005          :::*                    LISTEN      24251/java           tcp6       0      0 :::8009                 :::*                    LISTEN      24251/java           tcp6       0      0 :::8080                 :::*                    LISTEN      24251/java     3、访问过程 输入www.123.com  直接访问到106.54.201.234:80   访问到106.54.201.234:8080的内容   4、nginx具体配置 第一:在WINDOWS系统的HOSTS文件进行域名和IP对应关系配置 C:\Windows\System32\drivers\etc\hosts 106.54.201.234    www.123.com   第二:在nginx配置文件中配置转发配置 [root@web local]# vim /usr/local/nginx/conf/nginx.conf     server {         listen       80;         server_name  106.54.201.234;           #charset koi8-r;         #access_log  logs/host.access.log  main;           location / {                 root    html;                 proxy_pass      http://106.54.201.234:8080;                 index   index.html index.htm;         }      Nginx配置实例 - 反向代理2 一、实现效果 使用nginx反向代理,根据访问不同的路径跳转到不同端口的服务中 nginx监听端口为9001 访问106.54.201.234:9001/edu    直接跳转到106.54.201.234:8080 访问106.54.201.234:9001/vod    直接跳转到106.54.201.234:8081   二、准备工作  1)准备两个tomcat服务器,一个8080端口,一个8081端口     vim /usr/local/tomcat8081/conf/server.xml    <Server port="8015" shutdown="SHUTDOWN">   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />   <!-- Security listener. Documentation at /docs/config/listeners.html       <Connector port="8081" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" />      <!-- Define an AJP 1.3 Connector on port 8019 -->     <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />    2)创建文件夹和网页页面 [root@web tomcat8081]# cd /usr/local/tomcat8080/webapps/ [root@web webapps]# mkdir edu [root@web edu]# vim a.html    <h1>8080!!</h1>   [root@web tomcat8081]# cd /usr/local/tomcat8081/webapps/ [root@web webapps]# mkdir vod [root@web edu]# vim a.html    <h1>8081!!</h1>   http://106.54.201.234:8080/edu/a.html http://106.54.201.234:8081/vod/a.html   三、具体配置   1)修改nginx配置文件 [root@web ~]# vim /usr/local/nginx/conf/nginx.conf     server {         listen       9001;         server_name  106.54.201.234;           #charset koi8-r;           #access_log  logs/host.access.log  main;           location ~ /edu/ {                 root    html;                 proxy_pass      http://106.54.201.234:8080;                 index   index.html index.htm;         }             location ~ /vod/ {                 root    html;                 proxy_pass      http://106.54.201.234:8081;                 index   index.html index.htm;         }       Nginx配置实例 - 负载均衡 一、实现效果 浏览器地址输入地址:106.54.201.234/edu/a.html,将请求平均分到8080和8081端口   二、准备工作 1)准备两个tomcat服务器,一个8080端口,一个8081端口     vim /usr/local/tomcat8081/conf/server.xml    <Server port="8015" shutdown="SHUTDOWN">   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />   <!-- Security listener. Documentation at /docs/config/listeners.html       <Connector port="8081" protocol="HTTP/1.1"                connectionTimeout="20000"                redirectPort="8443" />      <!-- Define an AJP 1.3 Connector on port 8019 -->     <Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />   2)创建文件夹和网页页面 [root@web tomcat8081]# cd /usr/local/tomcat8080/webapps/ [root@web webapps]# mkdir edu [root@web edu]# vim a.html    <h1>8080!!</h1>   [root@web tomcat8081]# cd /usr/local/tomcat8080/webapps/ [root@web webapps]# mkdir edu [root@web edu]# vim a.html    <h1>8081!!</h1>   三、具体配置 [root@web ~]# vim /usr/local/nginx/conf/nginx.conf 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"';       #access_log  logs/access.log  main;       sendfile        on;     #tcp_nopush     on;       #keepalive_timeout  0;     keepalive_timeout  65;       #gzip  on;       upstream myserver {         server 106.54.201.234:8080 weight=1;         server 106.54.201.234:8081 weight=1;         }       server {         listen       80;         server_name  106.54.201.234;           #charset koi8-r;           #access_log  logs/host.access.log  main;           location ~ /edu/ {                 root    html;                 proxy_pass      http://myserver;                 index   index.html index.htm;                 }         }     nginx分配服务器策略     1)轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器DOWN掉,能自动剔除     2)weight:weight代表权重默认为1,权重越高被分配的客户越多     3)ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器     4)fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配     upstream myserver {         ip_hash;         server 106.54.201.234:8080;         server 106.54.201.234:8081;         }       upstream myserver {         server 106.54.201.234:8080;         server 106.54.201.234:8081;         fair;         }     Nginx配置实例 - 动静分离 1、准备工作 在linux系统中准备静态资源,用于进行访问 /data/image/1.png /data/www/a.html   2、具体配置     1)在nginx配置文件中进行配置 [root@web www]# vim /usr/local/nginx/conf/nginx.conf     server {         listen       80;         server_name  106.54.201.234;           #charset koi8-r;           #access_log  logs/host.access.log  main;           location /www/ {                 root    /data/;                 index   index.html index.htm;                 }         location /image/ {                 root    /data/;                 autoindex       on;    -- 列出当前文件夹的内容                 }         }         Nginx - 高可用集群 配置高可用准备工作     1)两台服务器 10.10.10.11 和 10.10.10.12     2)在两台服务器安装nginx     3)在两台服务器安装keepalived  完成高可用配置 [root@LVS2 nginx-1.12.2]# vim /etc/keepalived/keepalived.conf   ! Configuration File for keepalived     global_defs {    notification_email {      acassen@firewall.loc      failover@firewall.loc      sysadmin@firewall.loc    }    notification_email_from Alexandre.Cassen@firewall.loc    smtp_server 10.10.10.11    smtp_connect_timeout 30    router_id LVS_DEVEL }     vrrp_script chk_http_port {         script "/usr/local/src/nginx_check.sh"         interval 2         weight   2 }     vrrp_instance VI_1 {     state MASTER     interface ens33     virtual_router_id 51     priority 100     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         10.10.10.100         } } nginx心跳检测脚本   #!/bin/bash A=`ps -C nginx --no-header | wc -l`         if [ $A -eq 0 ];         then         /usr/local/nginx/sbin/nginx         sleep 2         if [ `ps -C nginx --no-header | wc -l` -eq 0 ];         then         killall keepalived    fi fi                    

标签:基本,nginx,local,介绍,server,Nginx,html,服务器,root
来源: https://www.cnblogs.com/chenyun1/p/12562776.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有