nginx的源码编译及相关文件配置
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx的源码编译及相关文件配置相关的知识,希望对你有一定的参考价值。
nginx 安装
Ngninx与apache的比较
1.轻量级,同样起web服务,比apache占用更少的内存及资源
2.抗并发,nginx处理请求是异步非阻塞的,而apache是同步阻塞型的,在高并发下nginx能保持低资源低消耗高性能,apache是同步多进程模型,一个连接对应一个进程;nginx是异步,多个连接可以对应一个进程
3.高度模块化的设计,编写模块相对简单
4.nginx处理静态文件好,耗费内存少,一般动态请求要apache去做,nginx适合做静态和反向
nginx服务器:
server1:172.25.44.1
后端服务器:
server2:172.25.44.2
server3:172.25.44.3
测试真机:
foundation44:172.25.44.250
实验环境:getenforce disabled
iptableds off
##nginx服务器###
原码编译
tar zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1
vim nginx-1.10.1/auto/cc
#CFLAGS=”$CFLAGS -g” (注释掉这行,去掉 debug 模式编译,编译以后程序只有几百 k)
vim nginx-1.10.1/src/core/nginx.h
#define NGINX_VERSION "1.0.2”
#define NGINX_VER "nginx" (修改此行,去掉后面的“NGINX_VERSION”,为了安全,这样编译后外界无法获取程序的版本号)
1. ./configure --prefix=/usr/local/lnmp/nginx --with-http_ssl_module --with-http_stub_status_modul ###通过prefix制定了安装路径,
yum install pcre-devel -y ##解决依赖性
yum install openssl-devel -y
2. make && make install
ln -s /usr/local/lnmp/nginx/sbin/nginx /usr/local/sbin ####建立软连接,直接将nginx作为系统指令,或在/etc/profile 输入指令
export PATH=$PATH:/usr/local/lnmp/nginx/sbin,保存退出后,刷新source /etc/profile
nginx -t #检测语法
nginx #运行 nginx
nginx -s reload #重载主配置文件
nginx -s stop #关闭 nginx
若要删除编译:
rm -fr /usr/local/lump/nginx
cd nginx.1.10.1
make clean
cd ..
rm -fr nginx.1.10.1
****nginx.conf 配置文件****
user nginx; #######nginx用户
worker_processes 1; ###工作进程:数目。根据硬件调整,通常等于cpu数量或者2倍于cpu
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info; ##错误日志:存放路径
events {
worker_connections 1024; ####工作进程的最大连接数量。尽量大
}
#keepalive_timeout 0;
keepalive_timeout 65; ###keepalive超时时间
upstream westos {
server 172.25.44.2:80 weight5;
server 172.25.44.3:80 down;
#server 127.0.0.1:80 backup; ##轮询
weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
Ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。
backup: 其他所有的非backup机器down或者忙的时候,请求backup机器
server { ##虚拟机
listen 80; ##监听端口
server_name server1.example.com; ##配置访问域名
proxy_pass
location /status {
stub_status on;
access_log off; ##设定查看nginx状态的地址
}
此状态可通过浏览器测试
1.添加nginx用户
useradd nginx
vim nginx.conf
user nginx;
worker_processes 2;
nginx -s reload
ps -aux
2.cpu
vim nginx.conf
worker_processes 2;
worker_cpu_affinity 01 10; ##cpu32核cpu,开启两个进程 ,01表示启用第一个cpu内核,10表示启用第二个cpu内核worker_cpu_affinity 01 10表示开启两个进程,第一个对应着第一个cpu内核,第二个进程对应着第二个内核。
worker_processes 4;
worker_cpu_affinity 0001 0010 0100 1000; ##4核cpu,开启4个进程
nginx默认没有开启多核cpu,因此可以通过增加worker_cpu_affinity配置参数来充分利用多核cpu,cpu是任务处理,计算最关键的资源,cpu核越多性能就越好。
events {
use epoll; ##使用epoll高效工作模式
worker_connections 4096;
}
3.ssl证书 vim nginx.conf
server {
listen 443 ssl;
server_name server1.example.com;
ssl_certificate cert.pem;
ssl_certificate_key cert.pem;
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;
}
}
生成自签证书
cd /etc/pki/tls/cert
make cert.pem
填写信息后将生成的证书移动到编译后的目录中
mv cert.pem /usr/local/lnmp/nginx/conf/
nginx -t #检测语法
nginx -s reload ##重新加载
[[email protected] conf]# netstat -antlpe | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 0 10759 1481/nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 0 10760 1481/nginx
在实验机上用浏览器访问https://server1.example.com
获取证书
重写网页:
server {
listen 80;
server_name server1.example.com;
rewrite ^(.*)$ https://$host$1 permanent;
或者编写配置文件
vim /usr/local/lnmp/nginx/html/index.html
4.配置虚拟主机
mkdir /www1
mkdir /www2
vim /www1/index.html
<h1>www.westos.org</h1>
vim /www2/index.html
<h1>bbs.westos.org</h1>
nginx -s reload
实验机将解析做好后,用浏览器访问
bbs.westos.org
8.配置负载均衡
打开两个后端服务器server2和server3
配置httpd
编写两个后端服务器的apache默认发布目录中的测试文件index.html
/etc/init.d/httpd restart
nginx服务器配置文件
nginx.conf
http {
upstream westos {
server 172.25.44.2:80;
server 172.25.44.3:80;
}
将之前的一个虚拟机更改
server {
listen 80;
server_name www.westos.org;
location / {
proxy_pass http://westos;
}
nginx -s reload
配置完成
在实验机上用语句进行测试
[[email protected] Desktop]# for i in $(seq 10); do curl www.westos.org;done
<h1>www.westos.org-2</h1>
<h1>www.westos.org-3</h1>
<h1>www.westos.org-2</h1>
<h1>www.westos.org-3</h1>
<h1>www.westos.org-2</h1>
<h1>www.westos.org-3</h1>
<h1>www.westos.org-2</h1>
<h1>www.westos.org-3</h1>
<h1>www.westos.org-2</h1>
<h1>www.westos.org-3</h1>
几种模块举例
(1).连续命中
http {
upstream westos {
server 172.25.44.2:80 weight=2;
server 172.25.44.3:80;
}
在真机上进行测试
其他几种模式:
(2).http {
upstream westos {
server 172.25.44.2:80 down;
server 172.25.44.3:80 backup;
}
(3)http {
upstream westos {
ip_hash;
server 172.25.44.2:80;
server 172.25.44.3:80;
}
本文出自 “11897256” 博客,请务必保留此出处http://65147718.blog.51cto.com/11897256/1858474
以上是关于nginx的源码编译及相关文件配置的主要内容,如果未能解决你的问题,请参考以下文章
Nginx编译配置脚本篇- 源码相关变量脚本auto/sources
Nginx配置编译脚本篇- 解析配置选项脚本auto/options