热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nginx服务器安装过程与设置HTTPS的方法

Nginx是一款轻量级的Web服务器(反向代理服务器)及电子邮件代理服务器。由俄罗斯所开发,供其大型的入口网站及搜索引擎Rambler使用。其特点是内存占用很少,并发能力很强.Nginx的出现不是很早,但它的发展速度却是惊人的,嫣然已经成为世界门户网站考虑的对
     Nginx是一款轻量级的Web服务器(反向代理服务器)及电子邮件代理服务器。由俄罗斯所开发,供其大型的入口网站及搜索引擎Rambler使用。其特点是内存占用很少,并发能力很强.Nginx的出现不是很早,但它的发展速度却是惊人的,嫣然已经成为世界门户网站考虑的对象。中国大陆我们比较熟悉的有:新浪、网易、腾讯、小米、淘宝等等。下面是Nginx的世界占有率排名:
下面我们通过一些小的测试来简单了解一下Nginx的强大。
【准备工作】
①Nginx的官网下载最新的源码:nginx-1.3.16.tar.gz
②Libeventd官网下载最新源码:libevent-2.0.18-stable.tar.gz
说明:nginx采用Epoll【事件通知】机制,需要libevent库的支持,在Red Hat的光盘上是有的,不过版本很低。
③Pcre:一个Perl库,包括perl兼容的正规表达式库,也是需要的。
在Red Hat的光盘上是有的,而且默认已经装过了,但还需要它的一个devel包pcre-devel-6.6-2.e15_1.7(不装编译会出错的).
④Apache:安装Red Hat光盘自带(为了用它带的压力测试工具ab)
一:源码安装Nginx
①创建Nginx服务的nologin系统账号
  groupadd  -r nginx
  useradd -r  -g  nginx  -M  nginx
② 解压缩源码.
  tar  zxvf  nginx-1.3.16.tar.gz  -C /usr/local/src/
  cd  /usr/local/src/nginx-1.3.16
③源码安装.
   ./configure \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-pcre
  make  &&  make install 
二:Nginx&Apache的压力测试比较分析
拷贝nginx的主页文件到apache的主目录下(用于压力测试公平性)
cp   /usr/local/nginx/html/index.html  /var/www/html
启动Apache服务,进行压力测试.
service  httpd  start
停掉Apache服务,启动Nginx进行压力测试.
注意:启动Nginx前要先建一个client访问时的临时目录.
mkdir  -pv  /var/tmp/nginx/client/
启动nginx服务.
/usr/local/nginx/sbin/nginx
测试结果显而易见了。。。。。。。。
三:Nginx的一些基础应用
【基于ip地址的虚拟主机】(vim /etc/nginx/nginx.conf)
 添加两块网卡:eth0 192.168.145.100  
             eth0:0 192.168.145.101
server {
        listen       192.168.145.100:80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_log  /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
server {
        listen       192.168.145.101:80;
        server_name  localhost;
        location / {
            root   /tec;
            index  index.html index.htm;
        }
        error_log  /var/log/nginx/tec_error.log;
        access_log /var/log/nginx/tec_access.log;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
【基于主机头的虚拟主机】(vim /etc/nginx/nginx.conf)
server {
        listen       192.168.145.100:80;
        server_name  www.wpp.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
        error_log  /var/log/nginx/error.log;
        access_log /var/log/nginx/access.log;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}
server {
        listen       192.168.145.100:80;
        server_name  tec.server110.com;
        location / {
            root   /tec;(这个目录要自己建立,目录下放置主页html文件)
            index  index.html index.htm;
        }
        error_log  /var/log/nginx/tec_error.log;
        access_log /var/log/nginx/tec_access.log;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
【加密访问】
Step1:建立证书颁发机构CA
①vim /etc/pki/tls/openssl.cnf 
②创建CA需要的需要的3个目录(certs、newcerts、crl)和2个文件(index.txt、serial)
cd /etc/pki/CA/ 
mkdir  certs newcerts crl  
touch index.txt  serial
echo 01 >serial(给serial一个初始序号)  
③生成CA自己的私钥文件,并修改权限,放到自己的私钥存放目录(private/)
④CA给自己颁发证书.(生成证书文件cacert.pem)
Step2:建立Nginx的安全目录,并生成相关的私钥和证书文件.
①mkdir -pv /usr/local/nginx/certs
  cd   /usr/local/nginx/certs
②生成私钥文件(nginx.key),并修改权限.
chmod  600  nginx.key
③提取刚才生成的私钥文件,生成请求证书文件(nginx.csr).
④将请求证书文件提交给证书颁发机构CA,生成证书文件(nginx.crt).
Step3:编辑配置文件,将我们的站点(www.server110.com)配置加密访问.
vim  /etc/nginx/nginx.conf(修改完配置文件记得重启服务)
Step4:加密访问测试.(为了方便测试:修改主机的Hosts文件)
Hosts路径(C:\Windows\System32\drivers\etc\HOSTS)
在浏览器的地址栏内输入 (https://www.server110.com),测试.
会提示找不到证书的颁发机构CA,那么我们该感到奇怪了,我们明明建立了CA了啊,而且也有了CA颁发的证书了啊,那为什么会没有呢?
怎么解决这个问题呢?
在Apache上把SSL被做成了它的一种模块,用于调用,而且有证书链的感念,所以可以通过证书链找到证书颁发机构。但是这些在Nginx上没有,但还是有解决办法的,下面就是一种好的解决方法:
既然没有找到CA的链,那我们自己创建一个他们的链不就行了!
cd  /usr/loacl/nginx/certs/ 
cp  /etc/pki/CA/cacert.pem ./
cat cacert.pem >>nginx.crt(将CA的私钥文件内容从定向到nginx的后面)
清空浏览器的缓存信息,
在浏览器的地址栏内输入 (https://www.server110.com),再次测试.
会提示当前证书是由不信任的CA所颁发的,但是也能强制访问的.
下面来解决一下不信任的问题:
在浏览器的证书管理里面已经可以查询到我们的CA信息了.
清空一下浏览器缓存信息,再次测试,这一次就可以正常访问了。。。。。。。
是不是很好玩呢?有兴趣的朋友也可以自己试一试哦!!!

推荐阅读
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 在使用 Nginx 作为服务器时,发现 Chrome 能正确从缓存中读取 CSS 和 JS 文件,而 Firefox 却无法有效利用缓存,导致加载速度显著变慢。 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • Centos7 Tomcat9 安装笔记
    centos7,tom ... [详细]
  • 本文介绍了 PHP 的基本概念、服务器与客户端的工作原理,以及 PHP 如何与数据库交互。同时,还涵盖了常见的数据库操作和安全性问题。 ... [详细]
  • Ubuntu 环境下配置 LAMP 服务器
    本文详细介绍了如何在 Ubuntu 系统上安装和配置 LAMP(Linux、Apache、MySQL 和 PHP)服务器。包括 Apache 的安装、PHP 的配置以及 MySQL 数据库的设置,确保读者能够顺利搭建完整的 Web 开发环境。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 本文将详细探讨PHP中C的作用,并对比其他编程语言如Java和C的特点及其适用场景。 ... [详细]
author-avatar
幸福的小馋豆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有