【Nginx】二、Nginx动静分离&配置HTTPS

一、日志配置

日志 access.log, error.log

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

日志格式定义:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

日志切割:

使用 -s reopen参数可以重新打开日志文件,这样可以先把当前日志文件改名或转移到其他目录中进行备份,再重新打开时就会生成新的日志文件,这个功能使得日志文件不至于过大:

/usr/local/nginx/sbin/nginx -s reopen

Linux下我们可以直接把日志文件mv走,但是当你mv移走后新的日志文件没有重新生成,一般linux下用的文件句柄,文件被打开情况下你mv走文件,但是原来操作这个文件的进程还是有这个文件的inode等信息,原进程还是读写原来的文件,而此时我们只需要执行一下 reopen,则会生成新的日志文件;
操作步骤:

  1. mv原文件到新文件夹中,此时 nginx还写这个旧日志文件(写入新位置的旧日志文件中了);
  2. 调用nginx -s reopen用来打开新日志文件,这样nginx会把新日志信息写入这个新的日志文件中;
    这样完成了日志的切割工作, 同时切割过程中没有日志的丢失;
    为了更高效地完成此工作,可以采用定时任务+脚本实现:
#!/bin/sh
date=`date +%Y%m%d%`
logpath1=/usr/local/nginx/logs/
logpath2=/opt/logs/nginx/
mv $logpath1/access.log $logpath2/access-$date.log
mv $logpath1/error.log $logpath2/error-$date.log
/usr/local/nginx/sbin/nginx -s reopen

配置定时任务:crontab

*/1 * * * * /usr/local/nginx/logCron.sh

二、动静分离

Nginx主要用于部署静态资源,比如部署静态网站,如果我们是一个动态网站,比如Java开发的动态网站,那么动态网站里面肯定有一些静态资源,像图片、css、html、js、视频、音频、文档等等,这些静态资源如果使用tomcat部署,效率并不高,而采用nginx部署则大大提高性能;
动静分离是实际应用中常见的一种场景;

  • 动态资源,如jsp由tomcat或其他web服务器完成;
  • 静态资源,如图片、css、js等由nginx服务器完成;

动静分离充分发挥它们各自的优势,从而达到更高效合理的架构;
在这里插入图片描述

1、 静态资源在Nginx中如何配置:

方式一:
通过在nginx.conf配置文件中添加静态资源的location,比如:

#当访问静态资源,则从linux服务器/opt/static目录下获取
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt
|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
        root /opt/static;
}

Localtion匹配的最终效果:

abd.js | asfkjasd.css | shdkufhskjdfhks.jpg

其中:

  • ~ 表示正则匹配,也就是说后面的内容可以是正则表达式匹配;
  • 第一个点 . 表示任意字符;
    • 表示一个或多个字符;
  • . 是转移字符,是后面这个点的转移字符;
  • | 表示或者
  • $ 表示结尾
  • 整个配置表示以 .后面括号里面的这些后缀结尾的文件都由nginx处理;
    方式二:

通过在nginx.conf配置文件中配置静态资源所在目录实现,比如:

location ~ .*/(css|js|img|image) {
      root   /opt/static;
}

Localtion匹配的最终效果: saefsw/css | safiuhasiufhsa/js | sdufhsdfjksd/img

http://www.web.com/css/index.css
http://www.web.com/static/protal/order/css/index.css

放置静态资源的目录,要注意一下目录权限问题,如果权限不足,可能会出现403错误,给目录赋予权限 chmod 744;

三、Nginx配置https

文档:http://nginx.org/en/docs/http/configuring_https_servers.html
HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层,HTTPS 不同于 HTTP 的端口,HTTP默认端口为80,HTTPS默认端口为443,现在大部分网站都实现了https;
Nginx 配置 HTTPS 并不复杂,主要有两个步骤:
(1)签署可信任的SSL证书;
(2)在Nginx中配置HTTPS;

1、什么是 SSL 证书

SSL证书是一种数字证书,它使用Secure Socket Layer协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:
1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;
2、用户可以通过服务器证书验证他所访问的网站是否真实可靠;
SSL 证书主要有两个功能:加密和身份证明,证书需要购买,比如:https://www.wosign.com
我们做实验就是自己签发一个证书,在企业里面到时候买一个证书即可,整个配置步骤都是完全一样的;’

2、自行颁发不受浏览器信任的SSL证书

通过openssl来生成,如果linux中没有安装openssl,需要安装一下,执行:

yum install openssl openssl-devel -y
  • 1、#生成一个RSA密钥 (私钥)
openssl genrsa -out mynginx.key 2048
  • 2、#生成一个证书请求
openssl req -new -key mynginx.key -out mynginx.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=power Inc./OU=Web Security/CN=web.com"
  • 3、#自己签发证书
openssl x509 -req -days 365 -in mynginx.csr -signkey mynginx.key -out mynginx.crt

字段解读

  • C字段:Country,单位所在国家,为两位数的国家缩写,如:CN 表示中国;
  • ST 字段:State/Province,单位所在州或省;
  • L 字段:Locality,单位所在城市/或县区;
  • O 字段:Organization,此网站的单位名称;
  • OU 字段:Organization Unit,下属部门名称,也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
  • CN 字段:Common Name,网站的域名;

3、在Nginx中配置HTTPS;

添加Nginx的ssl支持的模块:(最终是要重新编译出一个新的nginx可执行程序)
如果之前安装时没有加入ssl模块,则需要到解压的nginx目录下执行;

./configure --with-http_ssl_module

当执行上面语句,出现./configure: error: SSL modules require the OpenSSL library.
则需要安装 yum -y install openssl openssl-devel
依赖错误解决后再执行./configure --with-http_ssl_module
然后make (得到一个nginx可执行程序),不要make install否则会覆盖掉之前的nginx;

把原来nginx备份(如果不需要原来的也可以不备份)

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

把新编译出来的nginx覆盖旧的;

cp objs/nginx /usr/local/nginx/sbin/nginx

配置https

配置https
# HTTPS server
server {
	listen       443 ssl;
	server_name  localhost;

	ssl_certificate      /usr/local/nginx/mynginx.crt;
	ssl_certificate_key  /usr/local/nginx/mynginx.key;

	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;
	}
}

配置参数解读

  • ssl_session_cache shared:SSL:1m;
    所有工作进程之间共享缓存,缓存大小以字节为单位指定,一兆字节可以存储大约4000个session,每个共享缓存都应该有一个任意名称,具有相同名称的缓存可以用于多个虚拟服务器,Nginx官方提示使用shared,性能会更高
  • ssl_session_timeout 5m;
    指定客户端可以重用会话参数的时间;
  • ssl_ciphers HIGH:!aNULL:!MD5;
    指定启用的密码,密码以OpenSSL库可以理解的格式指定;
  • ssl_prefer_server_ciphers on
    设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件;‘’

访问
在这里插入图片描述

第一次访问,由于是我们自己生成的证书,浏览器不信任会弹出红色警告,点继续访问就行了;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值