源码编译安装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
源码编译安装nginx详细步骤的更多相关文章
- CentOS7 源码编译安装Nginx
源码编译安装nginx 1.下载nginx源码包(这里以nginx-1.18.0为例) wget http://nginx.org/download/nginx-1.18.0.tar.gz 2 ...
- 源码编译安装nginx及设置开机启动项
1.上传nginx文档:解压到/data目录下,并安装依赖包tar xf nginx-1.20.1.tar.gz -C /data/cd /data/nginx-1.20.1/ && ...
- Linux系统 - 源码编译安装Nginx
什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...
- Centos7通过yum跟源码编译安装Nginx
源码编译安装 http://nginx.org/en/download.html 到官网下载,然后用XFTP上传到root目录 把文件解压出来 tar -zxvf nginx-1.16.0.tar.g ...
- Ubuntu 16.04源码编译安装nginx 1.10.0
一.下载相关的依赖库 pcre 下载地址 http://120.52.73.43/jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.t ...
- 源码编译安装nginx
安装依赖软件 1.安装编译工具gcc gcc是一个开源编译器集合,用于处理各种各样的语言:C.C++.Java.Ada等,在linux世界中是最通用的编译器,支持大量处理器:x86.AMD64.Pow ...
- centos7 源码编译安装 nginx
安装步骤 下载 nginx 源码包 官网 $ wget http://nginx.org/download/nginx-1.16.0.tar.gz 解压 nginx 压缩包 $ tar -zxvf n ...
- Centos6.5源码编译安装nginx
1.安装pcre下载地址:http://jaist.dl.sourceforge.net/project/pcre/pcre/8.38/pcre-8.38.tar.gz #tar -axvf pcre ...
- CentOS 7 源码编译安装 Nginx
这里安装的是nginx 1.14版本 1.下载源码 #下载 wget http://nginx.org/download/nginx-1.14.0.tar.gz #解压 tar -xzf nginx- ...
随机推荐
- 1022 Digital Library (30 分)
1022 Digital Library (30 分) A Digital Library contains millions of books, stored according to thei ...
- static变量、static函数与普通变量、普通函数的区别
转自:http://blog.163.com/sunshine_linting/blog/static/44893323201191294825184/ 全局变量(外部变量)的说明之前再冠以stati ...
- 10 个轻松学会 CSS3 的优秀在线资源
本文包揽 CSS 的所有关键点,并且引入了最新的 CSS3 版本.这个先进的技术提供超级多的新标签和属性,使得 Web 设计构建创新更简单,帮助开发者创建具有新趋势,带有漂亮布局的 Web 页面.随着 ...
- CSS 案例学习
1.样式 display:inline-block;可改变a标签,合其可定义宽高 2.a:hover表示鼠标经过 3.background:url(110.png) bottom 表示:给链接一个图片 ...
- 关于版本管理工具SVN
曾经使用过Git,但是目前使用的是相对简单的svn. 刚使用的时候,如果不出意外.会有同学配好环境与权限. 前端只需要将代码下载,修改,更新,与上传. 一 .下载 1.本地新建文件夹,作为本地仓库 命 ...
- span里面插入文字
.text-box span::before{ content:attr(data-text);}
- python--模块导入与执行
定义:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 一.模块注意: 1.所有的模块都应该自觉的往上写 2.调用模块的时候都是最先在本地找 3.写模块的顺序是 ...
- 2018-12-21-微软最具价值专家-MVP-如何获得-Resharper-的免费功能
title author date CreateTime categories 微软最具价值专家 MVP 如何获得 Resharper 的免费功能 lindexi 2018-12-21 11:29:0 ...
- Yacc - 一个生成 LALR(1) 文法分析器的程序
SYNOPSIS 总览 yacc [ -dlrtv ] [ -b file_prefix ] [ -p symbol_prefix ] filename DESCRIPTION 描述 Yacc 从 f ...
- 3.Struts2中Action类的三种写法
一.普通的POJO类(没有继承没有实现)-基本不使用 public class DemoAction1 { public String execute(){ System.out.println(&q ...