1、下载nginx源码包并解压

     可在http://nginx.org/en/download.html下载.tar.gz的源码包,如(nginx-1.4.7.tar.gz)

     下载后通过tar -xvzf 进行解压,解压后的nginx目录结构如下:

        

  2、为nginx设置安装目录和启用的模块

     切换到解压后的nginx目录中执行:

      ./configure --prefix=/opt/demo/nginx --add-module=/home/fastdfs-nginx-module/src  --with-http_stub_status_module --with-http_ssl_module

      参数说明:

        --prefix 用于指定nginx编译后的安装目录

        --add-module 为添加的第三方模块,此次添加了fdfs的nginx模块

        --with..._module 表示启用的nginx模块,如此处启用了http_ssl_module模块

      可能出现的错误:

        出现:./configure:  error: the HTTP rewrite module requires the PCRE library.

          解决方法:yum -y install pcre-devel

        出现:SSL modules require the OpenSSL library

          解决方法:yum install openssl-devel

  3、编译

    执行make 进行编译,如果编译成功的话会在第一步中objs中出现一个nginx文件

      特别注意:

        在已安装的nginx上进行添加模块的话执行到这里就行了,把objs中的nginx替换掉之前的安装的nginx/sbin/中的nginx文件,然后重启nginx就行了,如果执行下一步的install,会导致之前安装的nginx被覆盖,比如之前配置好的nginx.conf文件)

  4、安装

    执行make install 进行安装,安装后--prefix 中指定的安装目录下回出现如下目录结构

      

  5、启动nginx

    切入到第四步中的sbin目录或是创建一个nginx软链接

        ln -s /opt/demo/nginx/sbin/nginx /usr/bin/nginx

      完成后执行:

        nginx start(如需开机自启,可在/etc/rc.d/rc.local 文件中添此命令)

      如出现:nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

      则需通过nginx –c ../conf/nginx.conf    命令指定nginx的配置

    nginx的一些常用管理命令

      重启:nginx -s reload

      停止:nginx -s stop或者是通过kill nginx进程号

      查看版本:nginx –V

 

  关于nginx.conf配置文件

    在安装完nginx后会在conf目录中产生一个nginx.conf的配置文件

    里面有些默认配置,可根据自己的需求进行更改

    示例:

#user  nobody;
worker_processes ;
events {
use epoll;
worker_connections ;
} http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout ;
proxy_connect_timeout 600s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
proxy_buffer_size 64k;
proxy_buffers 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_ignore_client_abort on;
client_max_body_size 200m; #此参数在使用fdfs上传可控制上传文件的大小
   #日志的输出格式,如需打印请求的body参数信息,可在$body_bytes_sent后添加 $request_body
   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; #设置日志输出的位置
  access_log on; #是否开启日志,开启on,关闭off
  #负载均衡配置
  upstream test.com {
    ip_hash;
    server 192.168.68.9:;
    server 192.168.68.72:;
   }
server {
listen ; #监听的端口,http默认监听端口为80
server_name localhost; #监听的主机名
location / {
        #设置请求的头部中主机名为请求的主机名,而不是代理的nginx的主机名
   proxy_set_header Host $host:$server_port;
        #代理的目标地址,如果要进行负载均衡,目标地址可添test.com
proxy_pass http://192.168.68.9:8080;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
   #https配置,https默认监听端口为443
server {
listen ;
server_name system.test.com;
ssl on;
ssl_certificate_key cert/system.key; #ssl key文件的位置,此处使用配置文件的相对路径
ssl_certificate cert/system.pem; #证书文件,此处为阿里云云盾证书生成的.pem也可修改扩展名为熟悉的.crt
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1. TLSv1.;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.68.9:8080;
}
}
#以下为我的fdfs文件配置,没有使用fdfs可以不用配置
server {
listen ;
server_name localhost;
#location /group1/M01 {
# root /home/fdfs/storage2/data;
# ngx_fastdfs_module;
#} location /group1/M00 {
root /home/fdfs/storage1/data;
ngx_fastdfs_module;
}
error_page /50x.html;
location = /50x.html {
root html;
}
}
#include vhost/*.conf;
}

  关于https配置ssl

    如果在安装nginx的时候没有安装 --with-http_ssl_module模块要先安装该模块

    nginx –V 可查看已经安装的模块

    如果没有安装,只需执行以上步骤中的2、3步进行手动添加ssl模块

    添加一个https的server大概如下面这个样子

server {
listen 443; ##默认的监听端口为443
server_name localhost;
ssl on;
ssl_certificate_key xxx.key; ##私钥
ssl_certificate xxx.crt; ##证书,证书中包含公钥和私钥加密后的签名信息 location / {
root html;
index index.html index.htm;
proxy_pass http://xxx.xxx.xxx.xxx:xxx;
} }

  私钥和公钥为非对称加密方式加密内容,即公钥加密后的内容只有私钥可解,私钥加密后的内容只有公钥可解;

 大概原理:

    服务器证书中包含公钥和签名(对证书内容进行hash后使用ca机构的私钥加密)等信息,浏览器请求发出tcp三次握手成功后服务器会将该证书发送给浏览器,浏览器会判断服务器证书是否过期或被吊销且是权威机构颁发,不是符合条件会中断访问,并显示警告提示;如果符合的话会产生一个随机字符串并用服务器证书中的公钥加密发送给服务器端,服务器再通过自己的私钥解密那个随机字符串,将这个字符串作为加密的密码来进行对称加密之后与浏览器交互的数据;

   关于浏览器怎样判断服务器证书是否为权威机构颁发:

首先要知道一下几个事情

服务器证书是受信任的ca机构签发的

ca机构本身也是有证书的(存在公钥和私钥)

浏览器本身内置了受信任的ca机构的证书(有公钥)

服务器证书当中存在"签名"

证书中的"签名"是对服务器证书内容进行hash后使用ca机构的私钥加密形成的

当客户端接收到了服务器证书之后,会根据证书的内容进行散列计算得到证书内容的hash值,还会通过浏览器内置的证书(ca)提供的公钥对签名进行解密.

如果解密得到的内容等于前面散列出的hash值,则说明证书是权威机构颁发的

手动编译安装nginx的更多相关文章

  1. linux环境手动编译安装Nginx实践过程 附异常解决

    1.下载nginx源码包并解压 可在http://nginx.org/en/download.html下载.tar.gz的源码包,如(nginx-1.4.7.tar.gz) 或者使用云盘下载   ht ...

  2. linux软件管理之------编译安装nginx服务器并手动编写自动化运行脚本

    红帽系列的 linux软件管理分为三类:1. rpm 安装软件.2. yum 安装软件.3. 源码包编译安装.前面两种会在相关专题给出详细讲解.源码包的编译安装是非常关键的,我们知道linux的相关版 ...

  3. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  4. LNAMP服务器环境搭建(手动编译安装)

    LNAMP服务器环境搭建(手动编译安装) 一.准备材料 阿里云主机一台,操作系统CentOS 6.5 64位 lnamp.zip包(包含搭建环境所需要的所有软件) http://123.56.144. ...

  5. Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.3 + Openssl 1.1.0h + Mariadb 10.3.7 + Nginx 1.14.0 + Asp.net. Core 2 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  6. Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Openssl 1.1.0e + Mariadb 10.1.22 + Nginx 1.12.0 + PHP 7.1.4 + Laravel 5.4 )

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...

  7. Centos6.4 编译安装 nginx php

    一. 准备依赖库 安装make: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++ 二. ...

  8. 源码编译安装nginx

    安装依赖软件 1.安装编译工具gcc gcc是一个开源编译器集合,用于处理各种各样的语言:C.C++.Java.Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86.AMD64.Pow ...

  9. CentOS6.6 32位 Minimal版本纯编译安装Nginx Mysql PHP Memcached

    声明:部分编译指令在博客编辑器里好像被处理了,如双横线变成单横线了等等,于是在本地生成了一个pdf版本,在下面地址可以下载. LNMP+Memcached CentOS是红帽发行的免费的稳定Linux ...

随机推荐

  1. verilog function功能函数写法

    :] sm2tc; :] din; :] dp; :] dn; :] dout; begin dp = {'b0, din[14:0]}; dn = ~dp + 'b1; dout = (din[] ...

  2. js中ASCII码和字符互相转换的方法

    目录 十进制ASCII码转换成字符 字符转换成十进制ASCII码 十进制ASCII码转换成字符 使用String.fromCodePoint(num1[, ...[, numN]])方法 String ...

  3. status 返回当前请求的http状态码

    status属性返回当前请求的http状态码,此属性仅当数据发送并接收完毕后才可获取.完整的HTTP状态码如下: 100 Continue 初始的请求已经接受,客户应当继续发送请求的其余部分 101 ...

  4. EXTJS4.2 内存中操作表格数据时,删除表格数据,行号不连续解决

    需要重新刷新下表格的view => grid.view.refresh();

  5. 推荐一款免费的PDF转换工具 | PDFCandy

    相信大家在用的PDF转换工具也很多,下面良心推荐这款软件(PDFCandy)给大家,方便在今后的工作中进行运用.提高大家的工作效率. PDFCandy分为两种:网页端和客户端.(根据大家的喜好度来进行 ...

  6. ScriptEngine执行复杂js报数组越界

    import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineMan ...

  7. Linux学习之基本操作命令

    目录基本操作命令 列目录内容ls ls  [options]  [files]  #options是可选参数 常用可选参数:-a 所有文件及目录 -A 等同于-a,但是不列出.以及..   -l 长格 ...

  8. 转载 CSDN 谈谈我对证券公司一些部门的理解(前、中、后台)

    谈谈我对证券公司一些部门的理解(前.中.后台) 2018年02月08日 15:11:07 unirong 阅读数:2165   文中对各大部门的分析都是从作者多年经历总结出来的有感之谈,尤其是前台的6 ...

  9. Linux Kernel C语言编程范式

    介绍 不同的编程语言具有不同的抽象原语(如下),有的原语抽象层次低,有的原语抽象层次高.其中函数式.DSL是这几年十分热门的编程语言概念. 过程式抽象原语:变量 对象式抽象原语:对象 函数式抽象原语: ...

  10. iOS 获取app进程被杀死事件

    程序被用户双击上滑杀死后,就对app做一些特殊的处理 下面的方法可以获取到用户双击上滑杀死的事件 - (void)applicationDidEnterBackground:(UIApplicatio ...