Nginx初步学习
程序与进程、线程的理解:
程序:在磁盘里面的时候。
进程:在内存里面的运行的时候,进程有自己的独立空间,进程与进程之间相互隔离,互不干预。
线程:是进程的子集,进程下边起线程,线程没有自己的独立的空间,线程共享进程的内存空间。
Nginx:不起线程:多进程工作模式
Web服务器对比:
适用于Unix和Linux平台下
- httpd——>Apache
- Nginx
- Tengine——>淘宝
- Tomcat——>Java
- WebSphere——>IBM
- Jboss——>红帽
Nginx简介:
Nginx("engine x")
是俄罗斯人编写的十分轻量级的HTTP服务器
是一个高性能的HTTP和反向代理,同时也是一个IMAP/POP3/SMTP 代理服务器
官网:http://nginx.org/
源码安装Nginx
安装依赖包: yum -y install gccpcre-developenssl-devel
创建普通用户:useradd -s /sbin/nologin nginx
解压Nginx源码包: tar -xf nginx-1.10.3.tar.gz
进入源码包路径:cd nginx-1.10.3
检测环境,指定安装功能与安装位置:
./configure --prefix=/usr/local/nignx --user=nginx --group=nginx --with-http_ssl_module
./configure
--prefix=/usr/local/nginx #指定安装路径
--user=nginx #指定用户
--group=nginx #指定组
--with-http_ssl_module #指定模块名
编译源码:make
安装:make install
控制服务
启动服务:/usr/local/nginx/sbin/nginx
查看服务状态:ss -anptul | grep nginx
关闭服务:/usr/local/nginx/sbin/nginx -s stop
重启服务:/usr/local/nginx/sbin/nginx -s reload
查看软件信息:/usr/local/nginx/sbin/nginx -V
$PATH #查看环境变量目录
ln -s 绝对路径 环境变量目录 #设置环境变量,使得Nginx可以在任何界面调用启动
查看服务状态命令:
netstat|ss查看系统中启动的端口信息
- -a 显示所有端口信息
- -n 以数字格式显示端口号
- -t 显示TCP连接的端口
- -u 显示UDP连接的端口
- -l 显示服务正在监听的端口信息
- -p 显示监听端口的服务名称是什么(也就是程序名)
Nginx服务默认通过TCP 80 端口监听客户端请求
[root@servernginx]# ss -anptul | grep nginx
Nginx配置文件及目录:/usr/local/nignx
- /usr/local/nginx/ //默认安装目录
- conf/nginx.conf //主配置文件
- html //网页目录
- logs //日志文件
- sbin/nginx //启动脚本
平滑升级Nginx版本
- l编译新版本: tar -xf nginx-1.12.2.tar.gz
- l进到新版本路径: cd nginx-1.12.2
- l检查环境:./configure --user=nginx --group=nginx --with-http_ssl_module #因为之前已经确认过文件位置(/usr/local/nginx/)
- l编译新版本:make
- l备份旧版本Nginx主程序,并使用make好的新版本替换旧版本
- l mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginxold
- l杀死旧版本进程:killallnginx #如果服务已经关闭不需要执行此步骤
- l拷贝新版本:cp objs/nginx /usr/local/nginx/sbin/
- l启动新版本:/usr/local/nginx/sbin/nginx
检测新版本
- 查看版本信息:/usr/local/nginx/sbin/nginx –V
- [root@qmtest ~]# nginx version: nginx/1.12.2
- l查看新版本状态: ss -anptul | grep nginx
- l访问服务:http://IP地址
Nginx配置文件解析
- 全局配置文件: /usr/local/nginx/conf/nginx.conf
[root@client nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
.. ..
server { //定义虚拟主机
listen 80; //默认监听端口号
server_name localhost; //网站域名
location / {
root html; //网页根目录
index index.html index.htm; //网页默认配置文件
}
}
}
- 错误日志文件:/usr/local/nginx/logs/error.log
- 访问日志文件:/usr/local/nginx/logs/access.log
阿帕奇hpptd
<virtualhost*:80>
servername 网站域名:www.xxx.com
documentroot 定义网站根目录 /var/www/html
<virtualhost>
用户认证
[root@client nginx]# vim /usr/local/nginx/conf/nginx.conf
http {
.. ..
server { //定义虚拟主机
listen 80; //默认监听端口号
server_name localhost; //网站域名
auth_basic "input Password"; //认证提示符
auth_basic_user_file "/usr/local/nginx/pass"; //认证密码文件
location / {
root html;
index index.html index.htm;
}
}
}
创建认证密码文件
[root@client nginx]# touch /usr/local/nginx/pass
安装软件包
[root@client nginx]# yum -y install httpd-tools
添加认证用户
[root@client nginx]# htpasswd -c /usr/local/nginx/pass haha \\只在第一次生成的时候加-c 选项
添加用户
[root@client nginx]# htpasswd /usr/local/nginx/pass laowang
重启服务
[root@client nginx]# nginx -s reload
访问测试:192.168.0.x
Nginx虚拟主机
Nginx三种模式虚拟主机
— 基于域名的虚拟主机
— 基于端口的虚拟主机
— 基于IP的虚拟主机
基于域名的虚拟主机
基于域名的虚拟主机
[root@client nginx]# vim /usr/local/nginx/conf/nginx.conf
.. ..
第一个:
server {
listen 80; //端口
server_name www.xxoo.com; //域名
location / {
root html; //网站根目录
index index.html index.htm;
}
}
第二个大概83行有模板:
server {
listen 80; //端口
server_name www.xxxx.com; //域名
location / {
root xxxx; //网站根目录
index index.html index.htm;
}
}
创建网站目录
[root@client nginx]# mkdir /usr/local/nginx/xxxx
编写www.xxxx.com测试页面
[root@client nginx]# echo xxxx > /usr/local/nginx/xxxx/index.html
编写www.xxoo.com测试页面
[root@client nginx]# echo xxoo > /usr/local/nginx/html/index.html
加载配置
[root@client nginx]# nginx -s reload
创建本地解析
[root@client nginx]# vim /etc/hosts
.. ..
192.168.0.x www.xxoo.com
192.168.0.x www.xxxx.com
访问测试
[root@client nginx]# curl http://www.xxoo.com
[root@client nginx]# curl http://www.xxxx.com
基于端口的虚拟主机
域名相同但端口不同
基于端口的虚拟主机(了解内容)
server {
listen 8080; //端口
server_name www.xxoo.com; //域名
root html; //网站根目录
}
server {
listen 8000; //端口
server_name www.xxoo.com; //域名
root www; //网站根目录
}
基于IP的虚拟主机
域名无所谓了,ip不同
ip指定端口
server {
listen 192.168.0.x:80; //IP 端口
server_name www.xxoo.com; //域名
root html; //网站根目录
}
server {
listen 192.168.0.x 80; //IP 端口
server_name www.xxoo.com; //域名
root www; //网站根目录
}
部署加密网站:
部署HTTPS加密网站,加密模块 –with-http_ssl_module
- 加密算法一般分为:对称加密算法、非对称加密算法、信息摘要
- 对称加密算法:AES、DES 主要用于单机数据加密
- 非对称加密算法:RSA、DSA 主要用于网路数据加密
- 信息摘要:MD5、sha256 、sha512主要用于对数据的完整校验
部署私钥|证书
SSL加密网站的核心技术是非对称生成密钥
- [root@client ~]# cd /usr/local/nginx/conf/
- [root@client conf]# opensslgenrsa > cert.key //生成私钥
- [root@client conf]# openssl req -new -x509 -key cert.key > cert.pem //生成证书
回答问题:
1:国家的名字必须是2个字母的:CN
2:省份:
3:城市:
4;公司:
5:部门:
6:名字服务器或者自己姓名:
7:邮箱地址:
vim /usr/local/nginx/conf/nginx.conf
"100行附近"
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 html;
index index.html index.htm;
}
}
[root@client conf]# nginx -s reload //重启服务

浙公网安备 33010602011771号