源码编译安装nginx详细步骤

 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  1;
events {
     use epoll;
        worker_connections  51200;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    proxy_connect_timeout 600s;
    proxy_read_timeout 600s;
    proxy_send_timeout 600s;
    proxy_buffer_size 64k;
    proxy_buffers 4 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:8080;
    server 192.168.68.72:8080;
   }
    server {
        listen       80; #监听的端口,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   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
   #https配置,https默认监听端口为443
    server {
        listen  443;
        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.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
             proxy_pass http://192.168.68.9:8080;
        }
    }
    #以下为我的fdfs文件配置,没有使用fdfs可以不用配置
    server {
        listen       9300;
        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   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
#include vhost/*.conf;
}

  关于https配置ssl

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

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

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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值,则说明证书是权威机构颁发的

原文来源:https://www.cnblogs.com/luobiao320/p/7189934.html

原文地址:https://www.cnblogs.com/catlee/p/10290497.html

时间: 2024-07-30 08:54:41

源码编译安装nginx详细步骤的相关文章

Centos7通过yum跟源码编译安装Nginx

源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.gz 然后用yum安装依赖项 yum install gcc pcre-devel zlib-devel 如果没装以上相关的依赖,会在./configure过程中出现各种错误 下图是没装gcc包的错误,我看网上要装gcc-c++,但我发现我只安装gcc也没问题 下图是没装pcre-devel出现的错误

centos7 源码编译安装 nginx

安装步骤 下载 nginx 源码包 官网 $ wget http://nginx.org/download/nginx-1.16.0.tar.gz 解压 nginx 压缩包 $ tar -zxvf nginx-1.16.0.tar.gz 运行 configure 文件检测程序 $ cd nginx-1.16.0 $ ./configure --prefix=/usr/local/nginx checking for OS + Linux 3.10.0-957.12.2.el7.x86_64 x8

Centos6.5源码编译安装nginx

1.安装pcre下载地址:http://jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz #tar -axvf pcre-8.38.tar.gz   //解压 #cd pcre-8.38 #./configure --prefix=/usr/local/pcre #make && make install 2.安装zlib 下载地址:http://zlib.net/zlib-1.2.8.tar.gz Wget

CentOS 7 源码编译安装 Nginx

这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx-1.14.0.tar.gz cd nginx-1.14.0 2.安装编译环境 yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel 3.编译安装 #添加用户和组 groupadd www useradd -g

Linux 从源码编译安装 Nginx

Nginx 是一个高性能的 HTTP 和 反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器.Nginx 编译安装比较简单,难点在于配置.下面是 Nignx 0.8.54 编译安装和简单配置笔记. 一.准备工作 1.1.安装 OpenSSL OpenSSL 版本:openssl-1.0.0c (安装方法) 1.2.准备 pcre 库 pere 是为了让 nginx 支持正则表达式.只是准备,并不安装,是为了避免在64位系统中出现错误. 1.wget ftp://ftp.csx.c

在linux通过源码编译安装redis详细步骤

1.下载源码包 [[email protected] opt]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz 2.解压缩redis [[email protected] opt]# tar -zxvf redis-4.0.10.tar.gz [[email protected] opt]# cd redis-4.0.10 3.进入redis源码,直接可以编译且安装make && make install [[emai

Linux源码编译安装nginx

ps:一切从简 一.安装所需环境: yum -y install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel 二.下载及安装nginx 1.下载nginx:wget http://nginx.org/download/nginx-1.8.1.tar.gz 2.解压nginx: tar -xzf nginx-1.8.1.tar.gz 3.添加用户组:groupadd www.useradd -

centos7 源码编译安装nginx教程 nginx安装脚本

安装nginx需要pcre zlib openssl的库,下文都是在官网直接下载用作编译安装 该nginx安装教程,有安装maxmind IP 库 该nginx安装教程有安装openrestry 系统使用了centos 7 该教材有修改最大打开文件描述符数到最大 该教程是nginx安装的shell脚本 #!/bin/bash yum install epel-release -y yum install gcc gcc-c++ make automake autoconf libtool ipt

源码编译安装nginx

简单记录下安装nginx的过程 1. 开始安装nginx. 1.1 下载nginx,b并安装: cd  /usr/local/src/ wget  http://nginx.org/download/nginx-1.6.2.tar.gz tar  xzvf  nginx-1.6.2.tar.gz cd nginx-1.6.2 ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_sub_module