Nginx配置指定用户访问
Nginx配置指定用户访问背景
解决问题
网站上有一些页面还没有修改完毕,此时不便于提供给用户浏览,又或者是有一个页面的数据只是用于个人浏览,便需要对页面进行加密,此前尝试通过hexo的插件加密指定的网页,但本质上密码就写在了html源码里,形同虚设。这一切都是限于网站是静态的,无法从程序上进行限制,所以考虑直接从nginx服务器端直接控制,便引入了auth_basic的配置项
使用模块
htpasswd、nginx
参考文档
https://www.cnblogs.com/xzlive/p/9492879.html
http://www.tashan10.com/nginxshe-zhi-wang-zhan-fang-wen-mi-ma/
使用
安装htpasswd的包
1sudo apt-get install apache2-utils
执行命令生成密码文件,htpasswd的具体参数详见拓展部分
123# htpasswd [参数] 文件存储的绝对路径 用户名 密码# 此处因为指定了-b选项,所以可以直接在后面追加用户名和密码的选项htpasswd -bdc pwd ...
Nginx取消显示nginx版本信息
Nginx取消显示nginx版本信息背景
Nginx默认会在响应头中返回Server信息,将Nginx的版本和服务器的信息展示出来,这玩意儿还是有风险的,所以希望能够修改掉这个Server的字段信息,亦或是直接不显示这个字段的信息,因此遇到了headers-more-nginx-module
提供两种修改方式:
去除响应头的Server显示
通过headers-more-nginx-module修改响应头
配置方式去除server显示打开nginx.conf配置文件,在http模块(或者对应的server模块)中添加如下内容
12# off表示关闭响应头部的server版本显示,on则相反server_tokens off;
headers-more-nginx-module修改响应头
下载headers-more-nginx-module版本的包:https://github.com/openresty/headers-more-nginx-module/releases
1234567# 根据自己的需要下载对应的版本包wget https://github.com/open ...
Nginx笔记
Nginx笔记背景
前段时间配置Nginx内容,对配置内容的了解仅限于字面上的了解,并不利于全面理解nginx内容。故找了一些教程看看,现下作一些笔记
Nginx下载来源:http://nginx.org/en/download.html
知识点基础
真实环境中nginx、数据库版本的选择
选择距离目前3~6个月的稳定版本,数据库选择距离目前6到8个月稳定版本
零碎知识
123456789101112131415161718# 查看官方库中是否有nginxapt list | grep nginx# 查看历史命令history# 查看最后执行的命令是否成功,输出为0表示没有错误# $?是ubuntu的特殊变量,表示最后命令的退出状态。echo $?# 查看端口占用lsof -i :80# 查看谁在使用某个文件lsof /path_to_the_file# 查看谁在使用网络# l:列表,n:数字,t:tcp链接,u:udp链接,p:程序,a:显示所有sudo netstat -lntup | grep nginx
nginx编译安装
123456789101112131415161 ...
CDN下配置nginx获取用户真实IP
CDN下配置nginx获取用户真实IP背景
由于网站使用了CDN,CDN的使用有助于提高网站的访问速度,其实现方式是CDN服务器根据用户的请求,自己请求Web服务器内容,然后根据返回的内容通过CDN服务器返回给用户,这样造成的结果就是会使得nginx记录的全是CDN服务器的IP,而不是真实的客户端IP,其结果并不利于访问日志的分析。
此外我想屏蔽国外IP对本网站的访问请求,将其重定向到国外的另一个网站,纯粹为了试验。
配置
在nginx配置文件/etc/nginx.conf中添加map配置,配置项位于http项中
123456789101112131415# 以下内容全部配置在http项中# 获取用户真实IP,并赋值给变量$clientRealIP。map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;}# 添加日志记录的配置格式,将其命名为:my ...
Nginx配置GeoIP2
Nginx配置GeoIP2背景
GeoIP2数据库是免费的IP地理位置数据库,可以通过GeoIP2对不同地域的访问IP自定义不同的响应。GeoIP2分为收费版、免费版,其中免费版准确性要差一些,它的数据库更新频率为每两周一次。对于我这种小网站来讲已经很够用了。
GeoIP2的前身是GeoIP,但是GeoIP已经过时了,被GeoIP2所替代。目前官网:https://www.maxmind.com/
搭建步骤简略:
安装libmaxminddb模块
编译安装ngx_http_geoip2_module模块
配置Nginx的ngx_http_geoip2_module模块
配置IP相关请求的处理方式
配置自动更新GeoIP2数据库
搭建安装libmaxminddb模块
准备编译环境
12sudo apt updatesudo apt install build-essential -y
通过apt安装libmaxminddb
12345678910# 添加更新源sudo add-apt-repository ppa:maxmind/ppa# 删除更新源# sudo add-apt- ...
nginx配置加密
Nginx配置加密背景搭建网站时,打开连接,chrome提示不安全,此时才想到需要配置https。由于https依赖于证书,所以本文也记录了一些免费的证书申请网站
阿里云:注册用于运行申请最多20个免费的DV证书
腾讯云:允许申请免费的DV证书,但是多少个不清楚
freessl:貌似没有限制申请证书的个数,本文以该网站为例
https证书申请
打开https://freessl.cn/注册
选择证书生成的方式
由于我选的是【一键生成】,故而让我下载安装【keymanager】,下载地址:https://keymanager.org/,安装路径没得选,双击直接就安装了,安装完之后弹出界面是需要设置密码的
安装完毕后,点击网页的【点击创建】,就可以自动打开【keymanager】生成创建证书的订单,同时会提示用户需要在【DNS解析服务器】上添加【txt】解析用于验证该域名是否属于本人。
在【DNS解析服务器】上添加完两个【txt】解析记录以后,点击【keymanager】上【已添加,验证】按钮,验证通过以后,就会生成好证书。
点击证书右侧【更多】,选择【导出证书】,选择对 ...