nginx 服务器搭建

nginx是什么

     我们在学习Nginx时也采用同样的方式,先来看看Nginx的竞争对手——Apache、Lighttpd、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能:基于REST架构风格 [1] ,以统一资源描述符(Uniform Resource Identifier,URI)或者统一资源定位符(Uniform Resource Locator,URL)作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务。
     Tomcat和Jetty面向Java语言,先天就是重量级的Web服务器,它的性能与Nginx没有可比性。

apache的特点

     Apache有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。

为什么选择Nginx

部署Nginx服务

官网获取软件包

下载适合您的版本
以下是做测试用的版本

 # wget http://nginx.org/download/nginx-1.15.5.tar.gz

如果您的主机上没有wget命令请安装
Centos RedHat 版本:

# sudo yum -y install wget 

ubuntu Depin系列:

# sudo apt install wget 

安装:

# mkdir /usr/local/nginx
# mv nginx-1.15.5.tar.gz  /usr/local/nginx/
# cd /usr/local/nginx/
# tar xf nginx-1.15.5.tar.gz
# cd nginx-1.15.5
# yum -y install gcc gcc-c++ pcre-devel   zlib-devel
# ./configure --prefix=/usr/local/nginx/
# make && make install 

启动服务

 /usr/local/nginx/sbin/nginx

选项

nginx -s stop|quit|raload|reopen

解释

stop — fast shutdown                                # 快速关机
quit — graceful shutdown                          # 优雅关机
reload — reloading the configuration file     # 重新加载配置文件
reopen — reopening the log files               # 重新代开日志文件

查看服务:默认是80端口

ps -ax | grep nginx

搭建虚拟主机

创建虚拟主机配置文件

# mkdir /usr/local/nginx/html/{gtxi,gtjb}
# echo "gongtongxuexi.com" > /usr/local/nginx/html/gtxi/index.html
# echo "gongtongjinbu.com" > /usr/local/nginx/html/gtjb/index.html

编辑配置文件:

配置文件所在位置 /usr/local/nginx/conf/nginx.conf
在配置文件定义虚拟主机加入:

    server {
        listen       8080;
       # listen       somename:8080;
        server_name  www.gongtongxuexi.com;
        location / {
            root   html/gtxi; 
            index  index.html index.htm;
        }
       }
    server {
        listen       8081;
       # listen       somename:8080;
        server_name  www.gongtongjinbu.com;

        location / {
            root   html/gtjb;
            index  index.html index.htm;
        }
       }

重新加载配置文件:

   /usr/local/nginx/sbin/nginx -s raload

验证:

打开浏览器访问 http//iP地址

配置文件解释:

keepalive_timeout  65;          # 设置连接超时时间
# 使用server定义虚拟主机
  server {
    listen       80;            # 监听端口
    server_name  localhost;     # 访问域名

    #charset koi8-r;            # 编码格式 

    # 设置虚拟主机的访问日志
    #access_log  logs/host.access.log  main;  

    # 对URL进行匹配
    location / {
    # 设置网页根路径
        root   html;
    # 先找html文件,如果没有则htm 
        index  index.html index.htm;
    }
 HTTPS server
    #
    #server {
    #    listen       443 ssl;         监听端口
    #    server_name  localhost;       访问域名
        指定证书文件,使用相对路径证书需要在与Nginx.conf同目录下
    #    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;
    #    }

网站的错误代码:

 1xx:代表提示信息
 2xx:代表成功信息
 3xx:代表重定向
 4XX:代表客户端错误信息
 5xx:代表服务器错误信息

Nginx实现反向代理

代理服务器

1、什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2、为什么要使用代理服务器

1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
    由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
3)通过代理服务器访问不能访问的目标站点
    互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

反向代理 VS 正向代理

1、什么是正向代理?什么是反向代理?

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。

2、反向代理有哪些主要应用?

现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。

  upstream web1.com{
            server 192.168.122.206;
    }
  upstream web2.com{
            server 192.168.122.84;
    }

 server {
     listen       80;
   # listen       someme:8080;
    server_name www.web1.com;
 location / {
       proxy_pass  http://web1.com;
       index  index.html index.htm;
     }
   }

  server {
      listen       80;
    # listen       somename:8080;
      server_name  www.web2.com;

   location / {
      proxy_pass   http://web2.com;
      index  index.html index.htm;
       }
    }