Nginx
安装包位置 /linux-soft/s2/wk/lnmp_soft.tar.gz
安装Nginx(源码编译)
安装包
-
gcc
-
make
-
pcre-devel #正则表达式依赖包
-
openssl-devel #ssl加密依赖包
-
nginx-1.22.1.tar.gz #nginx版本包
解压安装包
tar -xf nginx-1.22.1.tar.gz
详细安装nginx
- 指定安装地址 , 指定用户,组来设定权限 , 开启加密模式确认安全
[ ./configure ] #安装
–prefix=/usr/local/nginx #指定安装路径 , 默认为 /usr/local/nginx
–user=nginx #指定用户 , 默认为 nobody
–group=nginx #指定组
–with-http_ssl_module ] #开启SSL加密功能
/usr/local/nginx/ 为具体目录
conf/nginx.conf 配置文件 sbin 主程序
html 网站目录
logs 日志文件
sbin/nginx 启动脚本
/usr/local/nginx/sbin/nginx #启动服务
/usr/local/nginx/sbin/nginx -s stop #关闭服务
/usr/local/nginx/sbin/nginx -s reload #重新加载配置文件
/usr/local/nginx/sbin/nginx -V #查看软件信息
nginx服务默认通过TCP 80端口监听客户端请求:
ss -anptu | grep nginx
Nginx 用户认证
- 通过Nginx实现Web页面的认证,需要修改Nginx配置文件,在配置文件中添加auth语句实现用户认证。
- 使用htpasswd命令创建用户及密码即可
修改/usr/local/nginx/conf/nginx.conf
# vim /usr/local/nginx/conf/nginx.conf
.. .. # 34行
server {
listen 80;
server_name localhost;
auth_basic "Input Password:"; # 38行 认证提示符信息
auth_basic_user_file "/usr/local/nginx/pass"; # 39行 认证的密码文件
location / {
root html;
index index.html index.htm;
}
}
生成密码文件,创建用户及密码
安装 httpd-tools包
[root@proxy nginx]# yum -y install httpd-tools
[root@proxy nginx]# htpasswd -c /usr/local/nginx/pass tom
#创建用户/密码文件
New password: 新密码
Re-type new password: 新密码
Adding password for user tom
重新加载配置
[root@proxy nginx]# /usr/local/nginx/sbin/nginx -s reload
#重新加载配置文件
#请先确保nginx是启动状态,否则运行该命令会报错,报错信息如下:
基于域名的虚拟主机
配置 www.a.com 和 www.b.com
修改Nginx服务配置
# vim /usr/local/nginx/conf/nginx.conf
http { #17 行到最后中间加入
.. ..
server {
listen 80; #端口
server_name www.b.com; #新虚拟主机定义域名
location / {
root html_b; #指定网站根路径
index index.html index.htm; #默认页面
}
}
server {
listen 80; #端口
server_name www.a.com; #默认的虚拟主机,修改域名
location / {
root html-a; #指定网站根路径
index index.html index.htm;
}
}
}
创建网站根目录及对应首页文件
mkdir html_b html_a #创建b网站的目录
echo "nginx-A~~~" > html_a/index.html #创建a网站测试页
echo "nginx-B~~~" > html_b/index.html #创建b网站测试页
vim /etc/hosts #修改hosts文件添加ip和域名的映射关系
192.168.99.5 www.a.com www.b.com
恢复原本配置文件
cp /usr/local/nginx/conf/nginx.conf.default /usr/local/nginx/conf/nginx.conf
#备份的源文件 覆盖掉 当前文件
SSL虚拟主机
通过httpd访问
通过私钥、证书对该站点所有数据加密
对称算法有:AES、DES,主要应用在单机数据加密。
非对称算法有:RSA、DSA,主要应用在网络数据加密
Hash值 : 对比Hash值可以查看数据完整性 , 进行校准
-
MD5
-
SHA256
-
SHA512
配置SSL虚拟主机
修改Nginx配置文件,设置加密网站的虚拟主机
#vim /usr/local/nginx/conf/nginx.conf
… …
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem; #这里是证书文件
ssl_certificate_key cert.key; #这里是私钥文件
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root https; #加密网站根目录
index index.html index.htm;
}
}
生成私钥与证书
openssl genrsa > conf/cert.key #生成私钥
openssl req -x509 -key conf/cert.key > conf/cert.pem
#生成证书,生成过程会询问诸如你在哪个国家之类的问题,可以随意回答
Country Name (2 letter code) [XX]:dc 国家名
State or Province Name (full name) []:dc 省份
Locality Name (eg, city) [Default City]:dc 城市
Organization Name (eg, company) [Default Company Ltd]:dc 公司
Organizational Unit Name (eg, section) []:dc 部门
Common Name (eg, your name or your server's hostname) []:dc 服务器名称
Email Address []:dc@dc.com 电子邮件
客户端验证
[root@proxy nginx]# mkdir https #创建安全网站的目录
[root@proxy nginx]# echo "https~~~~ " > https/index.html
#创建安全网站的页面
[root@proxy nginx]# sbin/nginx #服务没开的话开服务
[root@proxy nginx]# sbin/nginx -s reload #已经开了的话重加载配置
[root@proxy nginx]# curl -k https://192.168.99.5 #检验,-k是忽略安全风险
https~~~~ #看到这个内容就说明实验成功
[root@proxy nginx]# systemctl stop firewalld #如果用真机的火狐浏览器测试需要
关闭防火墙,然后输入https://192.168.99.5