admin 管理员组文章数量: 1184232
2024年1月17日发(作者:python 桌面程序开发)
Linux环境-Nginx配置详解
一. 准备工作
系统:CentOS-6.5
虚拟机:VMware11
1. 工具
1) gcc、gcc-c++、zlib、zlib-devel、、、、、
2) 推荐将需要安装的工具都放在一个文件夹中,解压缩后不要删除;
2. 安装
安装前请将用户切换为root用户。
1) gcc、gcc-c++安装
yum –y install gcc gcc-c++
Tip: 判断是否已经安装gcc或 gcc-c++
命令:rpm –qa|grep gcc(gcc-c++)
2) zlib、zlib-devel安装
yum –y install zlib zlib-devel
Tip: 判断是否安装命令同上
3. pcre的安装
解压缩:tar –zxvf
配置:./configure –prefix=/usr/local/pcre
编译:make
1 | 16
Linux环境-Nginx配置详解
安装:make install
默认安装在/usr/local/pcre
4. openssl的安装
解压缩:tar –zxvf
配置:./config
编译:make
安装:make install
Tip:在make&make install时请耐心等待,openssl默认安装在/usr/local/ssl
5. nginx的安装
nginx安装前要先安装OpenSSL
解压缩:tar –zxvf
配置:./configure
--with-http_stub_status_module
--with-openssl=/home/zhao/openssl-1.0.1j
--with-pcre=/home/zhao/pcre-8.36
--with-http_ssl_module
--with-http_gzip_static_module
Tip:
--with-http_stub_status_module :启动nginx Status功能,用来监控Nginx的当前状态
--with-http_ssl_module:支持SSL
--with-openssl=/home/zhao/openssl-1.0.1j:启动SSL(这里制定源码目录,而不是编译后的安装目录)
--with-pcre=/home/zhao/pcre-8.36:启用正则表达式(这里制定源码目录,而不是编译后的安装目录)
--with-http_gzip_static_module:启用静态压缩
--with-http_memcached_module:启用memcache缓存
2 | 16
Linux环境-Nginx配置详解
--with-http_rewrite_module:启用支持URL重写(需要安装pcre,否则configure时报错)
编译:(编译时间比较长,请耐心等待)
make
安装:
make install
nginx默认安装路径/usr/local/nginx,以下的配置示例都使用该地址。
Tip:
查看版本:/usr/local/nginx/sbin/nginx -V
二. Nginx的启动、停止、平滑重启
1. 启动
命令:
/usr/local/nginx/sbin/nginx
2. 停止
ps命令查找Nginx的主进程号:
ps –ef | grep nginx
图2-2-1
从上图找到master process为49641。
从容停止:
kill – QUIT 49641
快速停止:
kill –TERM 49641
强制停止:
3 | 16
Linux环境-Nginx配置详解
pkill -9 49641
3. 平滑重启
如果改变了Nginx的配置文件,想重启Nginx,重启前要确认Nginx的配置文件的语法是否正确,否则不会加载新的配置文件。例如:
/usr/local/nginx/sbin/nginx –t
如果配置文件不正确,屏幕将提示配置文件第几行出错,如图2-3-1:
图2-3-1
如果配置文件正确,屏幕将提示以下两行信息:
图2-3-2
此时便可平滑重启(两种方式):
/usr/local/nginx/sbin/nginx –s reload
kill –HUP nginx主进程号
三. Nginx的虚拟主机配置
利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。
1. 配置基于IP的虚拟主机
编辑/etc/
vi /etc/
在文件末尾增加以下内容,然后保存即可,如图3-1-1:
4 | 16
Linux环境-Nginx配置详解
图3-1-1
192.168.220.130、192.168.220.131是虚拟ip,这样可以让服务器重启后,虚拟ip仍然有效。如果重启没有生效,有可能虚拟ip冲突,更换其它虚拟ip重试。
虚拟ipshiyong配置片段如下:
http
{
#第一个虚拟主机
server
{
#监听的端口
listen 80;
#主机名称
server_name ;
#访问日志文件存放路径
access_log logs/;
location /
{
#默认首页文件,顺序从左到右,如果找不到文件,则查找文件为首页文件
index ;
#HTML网页文件存放的目录
root /html/htdocs/;
}
}
#第二个虚拟主机
server
{
#监听的端口
listen 80;
#主机名称
5 | 16
Linux环境-Nginx配置详解
server_name ;
#访问日志文件存放路径
access_log logs/;
location /
{
#默认首页文件,顺序从左到右,如果找不到文件,则查找文件为首页文件
index ;
#HTML网页文件存放的目录
root /html/htdocs/;
}
}
}
四. Nginx与Tomcat的安装、配置
1. JDK和Tomcat的安装
1) JDK安装
解压:tar –zxvf
移动:将解压包移动到/usr/local/java mv jdk-1.7.0 /usr/local/java
编译:make
安装:make install
2) Tomcat安装
解压:tar –zxvf
移动:解压包移动到/usr/local 或重命名tomcat
2. 配置环境变量
编辑vim /etc/profil,配置如图4-2-1
6 | 16
Linux环境-Nginx配置详解
图4-2-1
执行命令使配置生效:
source /etc/profile
3. Nginx与Tomcat的配置
一个完整的配置示例:
#user nobody;
worker_processes 2;
#error_log logs/;
#error_log logs/ notice;
#error_log logs/ info;
pid logs/;
events {
worker_connections 1024;
}
http {
include ;
default_type application/octet-stream;
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/ main;
sendfile on;
tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
tcp_nodelay on;
7 | 16
Linux环境-Nginx配置详解
#gzip on;
client_body_buffer_size 512k;
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
upstream tomcat_server {
server 127.0.0.1:8080;
}
server
{
listen 80;
server_name 192.168.220.129;
#charset koi8-r;
index ;
root /data0/htdocs/www;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ $host/$1$2/ permanent;
}
location ~ .(jsp|jspx|do)?$
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass tomcat_server;
}
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*.(js|css)?$
8 | 16
Linux环境-Nginx配置详解
}
}
{
}
expires 1h;
五. Nginx HTTP负载均衡配置
Nginx的反向代理负载均衡能够很好地支持虚拟主机,可配置性很强,可以按轮询、IP哈希、URL哈希、权重等多种方式对后端服务器做负载均衡,同时还支持后端服务器的健康检查。
1. Nginx反向代理示例
user nobody;
worker_processes 2;
error_log logs/;
pid /usr/local/nginx/;
events {
use epoll;
worker_connections 1024;
}
http {
include ;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
9 | 16
Linux环境-Nginx配置详解
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#允许客户端请求的最大单个文件字节数
client_max_body_size 300m;
#缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再给用户;
client_body_buffer_size 128k;
#跟后端服务器连接的超时时间——发起握手等候相应超时时间
proxy_connect_timeout 600;
#连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理
proxy_read_timeout 600;
#后台服务器数据回传时间_就是在规定时间后端服务器必须传完的所有数据
proxy_send_timeout 600;
#代理请求缓存区_这个缓存区间会保存用户的头信息以供nginx进行规则处理_一般只保存头信息
proxy_buffer_size 16k;
#同上,告诉Nginx保存单个用的几个Buffer 最大用多大空间
proxy_buffers 4 32k;
#如果系统很忙时可以申请更打的proxy_Buffer *2
proxy_busy_buffers_size 64k;
#proxy缓存临时文件的大小
proxy_temp_file_write_size 64k;
#配置了apache服务器组
upstream apache_server_pool{
server 192.168.0.155:80 weight=4 max_fails=2 fail_timeout=30s;
}
#配置了tomcat服务器组
10 | 16
Linux环境-Nginx配置详解
upstream tomcat_server_pool{
server 192.168.0.155:8080 weight=4 max_fails=2 fail_timeout=15s;
server 192.168.1.38:8081 weight=3 max_fails=2 fail_timeout=15s;
}
#第一个虚拟主机,反向代理apache_server_pool这组服务器
server
{
listen 80;
server_name 192.168.220.129;
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass apache_server_pool;
proxy_set_header Host 192.168.220.129;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
#第二个虚拟主机
server
{
listen 80;
server_name 192.168.220.131
location /manager/
{
proxy_pass tomcat_server_pool;
proxy_set_header Host $host;
}
location /
{
proxy_pass apache_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
以上配置了apache服务器组tomcat服务器组,例如当访问虚拟机192.168.220.131/时,访问的是php_server_pool,即192.168.0.155:80。当访问 11 | 16
Linux环境-Nginx配置详解
192.168.220.131/manager/,访问的是tomcat_server_pool,即192.168.0.155:8080,因为它的权重高。如果192.168.0.155:8080服务器宕机,请求将转到192.168.1.38:8081。如果192.168.0.155:8080恢复,请求将再次转到本服务。
六. Nginx OpenSSL双向认证
确保OpenSSL的正确安装,然后就可以使用openssl命令了。
1. 服务器端私钥
#openssl genrsa -des3 -out 2048
运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法,当然也可以选用其他你认为安全的算法.),以后每当需读取此文件(通过openssl提供的命令或API)都需输入口令.如果觉得不方便,也可以去除这个口令,但一定要采取其他的保护措施!
去除key文件口令的命令:
#openssl rsa -in -out
2. 用生成证书
# openssl req -new -key -out
输入证书请求信息:
说明:
12 | 16
Linux环境-Nginx配置详解
A challenge password []: [可以不输入]
An optional company name []:[可以不输入]
3. 客户端私钥
# openssl genrsa -des3 -out 2048
4. 用生成证书
# openssl req -new -key -out
输入证书请求信息同服务类似,Country Name|Province Name|Locality Name|Unit
Name|hostname(不能和Server端输入相同的主机名)|email|
5. 生成可信任的CA证书
# openssl req -new -x509 -keyout -out
同上,注意这里的hostname的信息不要和以上重复。
签署证书的准备工作
13 | 16
Linux环境-Nginx配置详解
6. 文件签名
1) 服务端文件签名
# openssl ca -in -out -cert -keyfile
2) 客户端文件签名
# openssl ca -in -out -cert -keyfile
同上,同样需要两次确认。
14 | 16
Linux环境-Nginx配置详解
7. 为证书编码PKCS12
# openssl pkcs12 -export -in -inkey -out
8. Nginx配置
ssl on;
ssl_certificate ssl/;
ssl_certificate_key ssl/;
#ssl_client_certificate ssl/client/ ;
ssl_client_certificate ssl/ ; //CA证书
ssl_verify_client on; //开启客户端双向认证
七. 优化Nginx服务器
八. 控制Nginx如何记录日志
日志在必要的时候还是非常有用的,在具体的生成环境中建议将访问日志关闭。
1. log_format
log_format custom ‘$remote_addr | $remote_user[$time_local]’
‘”$request” $status $body_bytes_sent ’
九. 常见错误
1. 重启SSL报错的问题
问题:
nginx: [emerg] SSL_CTX_use_PrivateKey_file("/home/www/ssl/") failed (SSL:
error:0906D06C:PEM routines:PEM_read_bio:no start line error:140B0009:SSL
routines:SSL_CTX_use_PrivateKey_file:PEM lib)
解决:
routines:SSL_CTX_use_PrivateKey_file:PEM lib
15 | 16
Linux环境-Nginx配置详解
16 | 16
版权声明:本文标题:Nginx-v1.6.2配置详解-CentOS6.5 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1705455832a485452.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论