Nginx(一):配置HTTP和HTTPS并生成对应日志文件

3 篇文章 0 订阅
1 篇文章 0 订阅

需求:

  1. 全站HTTPS
  2. 同时也支持HTTP
  3. HTTPS和HTTP流量分布统计(查询条件精确到分且可以将接口名称作为参数)

初步解决方案:

由于公司用的Nginx服务器,所以HTTPS配置在Nginx里,于是初步方案如下:
在这里插入图片描述

实现方案

一、申请域名和证书

  1. 因为使用的是腾讯云的个人服务器,所以也就在腾讯云购买的5块钱域名一年有效免费证书
  2. 购买后可以在控制台里查看并下载证书
    在这里插入图片描述
  3. 并用WinSCP软件将证书上传到云服务器上

二、云服务器上安装NGINX

1.先安装gcc-c++编译器

yum install gcc-c++
yum install -y openssl openssl-devel

2.再安装pcre包

yum install -y pcre pcre-devel

3.再安装zlib包

yum install -y zlib zlib-devel

4.在/usr/local/下创建文件nginx文件

mkdir /usr/local/nginx

5.windows下载Nginx(下载地址)
6.用WINSCP上传到刚刚创建的文件夹并解压后修改名称

tar -zxvf nginx-1.19.9.tar.gz
mv nginx-1.19.9 nginx

7.启动nginx

#进入nginx的bin目录下
cd /usr/local/nginx/sbin
# 启动nginx
./nginx

访问公网IP看到下图即为成功
在这里插入图片描述

三、Nginx配置HTTPS

1.解压证书,并将其中Nginx目录下的.crt和.key结尾的文件拷贝到Nginx的conf目录下
在这里插入图片描述
在这里插入图片描述
2.移动conf目录下,编辑nginx的配置文件nginx.conf

vi /usr/local/nginx/conf/nginx.conf

文件内容修改为下列


#user  nobody;
worker_processes  1;

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

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$scheme -$uri - $request_uri - $remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
	#由于是需要放在elk里进行分析,所以选择了json格式 对应字段含义放在文章末尾
    log_format json '{"scheme":"$scheme","uri":"$uri","user_ip":"$http_x_real_ip","lan_ip":"$remote_addr","log_time":"$time_iso8601","user_req":"$request","http_code":"$status","body_bytes_sents":"$body_bytes_sent","req_time":"$request_time","user_ua":"$http_user_agent"}';
    #可以选择在这里进行打印 但是初步计划是分不同文件打印
    #access_log  logs/access.log  json; 

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    server {
        listen       80;
        server_name  你申请的域名;

        #charset koi8-r;

        access_log  logs/httpJsonAccess.log  json;

        location / {
        	 #由于只是测试版本 只有一个服务
             proxy_pass http://locahost:8050/;
      	     proxy_set_header   Host $host;
             proxy_set_header X-Real-IP $remote_addr;#web服务器端获得用户的真实ip
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
             client_max_body_size 100m; 
        }

    }
	
    server {
        listen       443 ssl;
        server_name  域名;
		#证书文件名称 因为是同一目录就没写路径
		ssl_certificate 1_域名_bundle.crt; 
		#私钥文件名称
		ssl_certificate_key 2_域名.key; 
		# 下面都是静态配置
		ssl_session_timeout 5m;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        #日志收集
		access_log  logs/httpsJsonAccess.log  json;
		location / {
			#代理的端口
            proxy_pass http://locahost:8050/;
			proxy_set_header Host $host;
			proxy_set_header X-Forwarded-Port $server_port;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			client_max_body_size 10m;
        }

    }

}

3.移动目录到nginx/sbin,并重新加载nginx配置,并访问

./nginx -s reload 

4.查看nginx/logs下目录文件
在这里插入图片描述

日志字段含义

$hostname 1.0.8 主机名

$http_cookie 1.0.8 cookie 信息

$http_referer 1.0.8 引用地址

$http_user_agent 1.0.8 客户端代理信息

$http_via 1.0.8 最后一个访问服务器的Ip地址。

$http_x_forwarded_for 1.0.8 相当于网络访问路径。

$limit_rate 1.0.8 对连接速率的限制;

q u e r y s t r i n g 1.0.8 与 query_string 1.0.8 与 querystring1.0.8args相同;

$remote_addr 1.0.8 客户端地址;

$remote_port 1.0.8 客户端端口号;

$remote_user 1.0.8 客户端用户名,认证用;

$request 1.0.8 用户请求

$request_body_file 1.0.8 发往后端的本地文件名称

$request_filename 1.0.8 当前请求的文件路径名,

$request_method 1.0.8 请求的方法,比如"GET"、"POST"等;

$request_uri 1.0.8 请求的URI,带参数; 比如http://localhost:88/test1/test2

$scheme 1.0.8 所用的协议,比如http或者是https

$server_addr 1.0.8 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费);

$server_name 1.0.8 请求到达的服务器名;

$server_port 1.0.8 请求到达的服务器端口号;

$server_protocol 1.0.8 请求的协议版本,“HTTP/1.0"或"HTTP/1.1”;

$uri 1.0.8 请求的URI,可能和最初的值有不同,比如经过重定向之类的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值