nginx(详细讲解)
nginx讲解
nginx 是一个功性能的http和反向代理web服务。
一、安装nginx
步骤:
(1)设置IP
(2)配置yum源
(3)#systemctl enable nginx ///开启自启服务
(4)主配置文件nginx
vi /etc/nginx/nginx.conf
详细配置文件的目录
/etc/nginx/conf.d/二、关于nginx网站的别名功能(虚拟目录功能)
绝对别名,目录不存在
案例:
/opt/wangluo 通过 http://192.168.1.1/net_class访问
/opt/ruanjian 通过http://192.168.1.1/soft_class访问
#mkdir /opt/wangluo
#echo"wangluo">/opt/wangluo/index.html
#mkdir /opt/ruanjian
#echo"ruanjian">/opt/ruanjian/index.html
#vim /etc/nginx/nginx.conf
location /opt/net_class { alias /opt/wangluo;}
location /opt/soft_class { alias /opt/ruanjian;}相对别名,目录是存在的 (网站的根目录)
案例:
/usr/share/nginx/html/school/jiaoxue 通过http://192.168.1.1/jiaoxue 访问
/usr/share/nginx/html/school/xingzheng 通过http://192.168.1.1/xingzheng 访问#mkdir -p /usr/share/nginx/html/school/jiaoxue
#mkdir -p /usr/share/nginx/html/school/xingzheng
#cd /usr/share/nginx/html/school
#echo"jiaoxue"> jiaoxue/index.html
#echo"xingzheng"> xingzheng/index.html
#vim /etc/nginx/nginx.conf
location /jiaoxue { root /usr/share/nginx/html/school/;}
location /xingzheng { root /usr/share/nginx/html/school/;}三、基于IP和端口的虚拟主机
(针对用户视觉:访问了多台web服务器(虚拟的))
服务器视觉:多台web服务器位于同一台物理主机上分类:
(1)基于IP的虚拟主机
主机设置多个ip地址:
#vim /etc/sysconfig/network-scripts/ifcfg-ens160
BOOTPROTO=YES
ONBOOT=NO
IPADDR0=192.168.112.22
NETMASK=255.255.255.0
GATEWAY0=192.168.112.254
IPADDR1=192.168.111.22
IPADDR2=192.168.222.22
DNS1=192.168.222.23#nmcli connection up ens160 //启用网卡
#systemctl restart NetworkManager //重启网卡服务
#mkdir -p /var/www/web1
#mkdir -p /var/www/web2
#echo web1> /var/www/web1/index.html
#echo web2> /var/www/web2/index.html
在/etc/nginx/conf.d/创建virtualhost.conf,名称可以任意,如v.conf等
#vim /etc/nginx/conf.d/v.conf
server{listen 192.168.111.22;root /var/www/web1;location / { index index.html;
}
}
server{listen 192.168.222.22;root /var/www/web2;location / { index index.html;
}
}(2)基于端口的虚拟主机
#mkdir -p /var/www/web8080
#mkdir -p /var/www/web8081
#echo web8080> /var/www/web8080/index.html
#echo web8081> /var/www/web8081/index.html
#vim /etc/nginx/conf.d/v.conf
server{listen 192.168.112.22:8080;root /var/www/web8080;location / { index index.html;
}
}
server{listen 192.168.112.22:8081;root /var/www/web8081;location / { index index.html;
}
}(3)基于主机名的虚拟主机
#mkdir -p /var/www/w1
#mkdir -p /var/www/w2
#echo w1> /var/www/w1/index.html
#echo w2> /var/www/w2/index.html
#vim /etc/nginx/conf.d/v.conf
server{listen 192.168.112.22;server_name w1.local.com;root /var/www/w1;location / { index index.html;
}
}
server{listen 192.168.112.22;server_name w2.local.com;root /var/www/w2;location / { index index.html;
}
}四、目录浏览和目录权限,用于文件下载。通过http://192.168.112.1/ 访问下载#vim /etc/nginx/conf.d/v.conf
root /var/www/manager
location / { autoindex on; #默认off
}由于该目录安全性不高,需要对主机访问进行限制(只允许192.168.112.1主机访问该目录)
location / { autoindex on; #默认offallow 192.168.112.1;deny all;
}第五 设置带证书的https
(1)创建证书
#mkdir -p /etc/ssl
#echo https> /etc/ssl/index.html
#openssl -genrsa -out server.key #生成私钥
#openssl req -new -key server.key -out server.csr -days 365 -subj"/C=cn/OU=System/O=skills/L=Beijing/ST=Beijing/CN=www.local.com"
#openssl x509 -req -in server.csr -signkey server.key -out server.crt (未通过CA颁发证书生成的自签名证书)
==============================================================================================================================
创建根证书CA:
#vi /etc/pki/tls/openssl.cnf #现在配置证书的名称和存放位置等相关信息做定义。
#cd /etc/pki/CA #创建为根证书CA所需的目录及文件
#mkdir -pv {certs,crl,newcerts,private} #创建配置文件信息中所需的目录及文件
#touch {serial,index.txt}
#echo 01 >> serial #指明证书的开始编号
#(umask077;openssl genrsa -out private/server.pem 2048) #生成根证书的私钥(注意:私钥的文件名与存放位置要与配置文件中的设置相匹配。 里的参数2048,指的是密钥的长度位数,默认长度为512位)
#ll private
#cd /etc/pki/CA
#生成自签证书,即根证书CA,自签证书的存放位置也要与配置文件中的设置相匹配,生成证书时需要填写相应的信息
#openssl req -new -x509 -key /etc/pki/CA/private/server.pem -out cacert.pem -day 365 -subj"/C=cn/OU=System/O=skills/L=Beijing/ST=Beijing/CN=www.local.com"
#ls /etc/pki/CA (cacert.pem就是生成完成的根证书CA)颁发证书,在需要证书的服务器上,生成证书签署请求
(1)生成私钥,该私钥的位置可随意定
#cd /etc/ssl
# (umask077;openssl -genrsa -out server.key 2048) #生成私钥
(2)生成证书签署请求
#openssl req -new -key server.key -out server.csr -days 365 -subj"/C=cn/OU=System/O=skills/L=Beijing/ST=Beijing/CN=www.local.com" 在根证书服务器上,颁发证书
(1)颁发证书,即签名证书,生成crt文件
#openssl ca -in /etc/ssl/server.csr -out /etc/pki/CA/certs/server.crt -day365
#openssl x509 -in /etc/pki/CA/certs/server.crt -noout -serial -subject ///查看证书信息
(2)格式转换为pfx格式的私钥#openssl pkcs12 -export server.pfx -inkey /etc/ssl/server.key -in /etc/pki/CA/certs/server.crt ///注意,-inkey的值server.key是需要证书服务器上生成的私钥key文件。
(3)格式转换为cer格式的公钥
#openssl x509 -inform pem -in /etc/pki/CA/certs/server.crt -outform der -out /etc/ssl/server.cer 由以pem编码pem转成以der编码的cer证书。
#openssl x509 -in /etc/ssl/server.cer -text -noout ///查看CER证书信息。
=============================================================================================================================
vi /etc/nginx/nginx.conf
server { listen 443;server_name www.local.com;root /etc/ssl;ssl_certificate "/etc/ssl/server.crt"; ssl_certificate_key "/etc/ssl/server.key";
}systemctl restart nginx ///重启
systemctl enable nginx ///开机自启===============================================================NGinx反向代理
反向代理服务器是一种代理服务器,用于管理从外部网络到内部网络的连接或任何特定请求。它保护、路由和管理从管理从外部网络到内部网络、WEB服务器或专用网络流量。模拟环境:
1、centos7(nginx) 172.16.123.123/16
2、windows server 2012R2 IP: 172.16.66.66 (站点1) IP:172.16.88.88(站点2)
3、Windows 7(cilent)IP:172.16.44.44/16
==============================================
此处只配置nginx的反向代理
一、基于域名或主机名的反向代理
(1)修改配置文件:vi /etc/nginx/nginx.conf (upstream 、server),我们不修改主配置文件,修改加载的配置文件
(2)创建网页 :windows server 2012R2上面创建两个网站。
(3)测试:(www.local.com----->sitel1;web.local.com---->site2)
前提:配置域名解析(平时设置动态:DNS ;静态解析:hosts)#vi /etc/nginx/conf.d/anti.conf
upstream site1 {server 172.16.66.66;
}
upstream site2 {server 172.16.88.88;
}
server { listen 80;server_name www.local.com;location / { proxy_pass http://site1;
}
server { listen 80;server_name web.local.com;location / { proxy_pass http://site2;
}#systemctl restart nginx==============================
客户机,修改hosts文件:C:\Windows\System32\drivers\etc\hosts中添加两条
172.16.123.123 www.local.com
172.16.123.123 web.local.com======================================================================
二、基于网页语言(html,asp,jsp,asp.net,php)的反向代理
(1)修改配置文件:vi /etc/nginx/nginx.conf (upstream 、server)
(2)创建网页(html,asp)
(3)测试(http://172.16.123.123/index.html----->site1;http://172.16.123.123/index.asp----->site2)
#vi /etc/nginx/conf.d/lan.conf
upstream asp {server 172.16.66.66;
}
upstream html {server 172.16.88.88;
}
server { listen 80;location ~*\.asp$ { proxy_pass http://asp;}location ~*\.html$ { proxy_pass http://html;}
}#systemctl restart nginx
#netstat -ant ///查看端口==============================================================================
三、基于访问源的反向代理 【实现区域式访问,就是指定杭州用户访问杭州区域的站点,指定江西用户访问江西区域的站点。】
(1)修改配置文件:vi /etc/nginx/nginx.conf (upstream 、server)
(2)创建网页
(3)测试时记得更换地区用户IP地址【如果客户机IP:172.16.33.33---->杭州用户(site1) ;反之客户机IP:172.16.44.44-------江西用户 (site2)】#vi /etc/nginx/conf.d/city.conf
upstream hangzhou.server {server 172.16.66.66;
}
upstream jiangxi.server {server 172.16.88.88;
}
geo $city { 172.16.33.33/32 huangzhou; ///自定义city名172.16.44.44/23 jiangxi;}
server { listen 80;location / { proxy_pass http://$city.server;}}#systemctl restart nginx
============================================
四、基于浏览器类型的反向代理 【实际生活中,很多网站需要特定的浏览器访问,解决问题就是同一个网站,做成适应不同浏览器的站点,或换一句就是google浏览器跳转site2,IE浏览器跳转site1】
(1)修改配置文件:vi /etc/nginx/nginx.conf (upstream 、server)
(2)创建网页
(3)测试【如果使用google浏览器------->site2) ;反之使用IE浏览器------->site1】#vi /etc/nginx/conf.d/explore.conf
upstream msie { ///IE规定使用msieserver 172.16.66.66;
}
upstream chrome { ///google使用任意server 172.16.88.88;
}
server { listen 80;location / { if($http_user_agent~*“MSIE”){proxy_pass http://msie; }if($http_user_agent~*“chrome”){proxy_pass http://chrome; }}}#systemctl restart nginxlocation 指令说明
=========================================================================
该指令用于匹配 URL。
语法如下:1、= :用于不含正则表达式的 url 前,要求请求字符串与 url 严格匹配,如果匹配 成功,就停止继续向下搜索并立即处理该请求。2、~:用于表示 url 包含正则表达式,并且区分大小写.3、~*:用于表示 url 包含正则表达式,并且不区分大小写。4、^~:用于不含正则表达式的 url 前,要求 Nginx 服务器找到标识 url 和请求字 符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 url 和请求字符串做匹配
=======================================================五、网站部署HTTPS加密连接协议后通常在刚开始我们会允许用户通过 HTTP或者HTTPS 两个版本进行自由访问。在测试 HTTPS 版已经没有问题的情况下,那么基于安全性考虑已经没有必要再让用户访问HTTP明文连接版本。因此我们需要将HTTP版的所有访问强制跳转到HTTPS版。
即:Nginx HTTP 301 HTTPS
通过修改虚拟主机的配置文件让 Nginx直接rewrite重写,所以首先我们下找到Nginx虚拟主机配置文件。nginx.conf添加或者修改如下代码:server{listen 80;#listen [::]:80;server_name www.local.com;rewrite ^(.*) https://www.local.com permanent; # 将HTTP 301 重定向到 HTTPS 开始,permanent表示301index index.html index.htm index.php default.html default.htm default.php; #默认首页
}
nginx(详细讲解)相关推荐
- nginx配置文件nginx.conf详细讲解(3)
上一节我们介绍了nginx.conf的配置文件的3个模块内容,分别是main,events,stream(请自行脑图我画的图–对就是猪脸的那个).本节我们进行http模块的详细讲解.那在讲解之前我们在 ...
- nginx详细文档 – 安装配置,深入源码,模块编写,编译器参数,系统函数
nginx文档 吴东 April 28, 2009 Contents 1前言 5 2基本配置 7 2.1安装------- 7 2.2配置说明------. 10 2.3启动和控制------ 25 ...
- 2.5万字详细讲解个人网站的开发过程和项目的部署
目录 简介 1 技术介绍 1.1 个人博客功能 1.2 技术组合 1.3 工具与坏境 2 项目的环境配置 2.1 vue的环境配置 2.2 解决跨域问题 2.3 关于图标的获取 3 前端技术 3.1 ...
- 【云原生】Docker数据卷及网络详细讲解
前言 大家好,本文是对 Docker 数据卷及网络详细讲解,讲解了如何创建使用数据卷,以及如何使用 Docker network.希望对大家有所帮助~ 目录 前言 一.Docker 数据卷 1.1.数 ...
- 【云原生】Docker镜像详细讲解
前言 大家好,本文是对 Docker 镜像的详细讲解,讲解了如何安装 Docker.配置 Docker 镜像加速以及操作 Docker 镜像.希望对大家有所帮助~ 目录 前言 一.安装 Docker ...
- Spring Cloud详细讲解
Spring Cloud详细讲解 一.微服务架构4个核心问题 1.服务很多,客户端该怎么访问? 2.这么多服务服务之间如何通信? 3.这么多服务,如何治理? 4.服务挂了怎么办? 解决方案: Spri ...
- 一文详细讲解API网关核心功能和API管理扩展
本文将详细讲解API网关的基础概念,使用场景和核心功能,以及基于API网关核心引擎做的API全生命周期管理功能扩展等,最后介绍当前主流的开源API网关引擎. API网关概述 在微服务架构体系里面,我们 ...
- 尚硅谷vue笔记 详细讲解版(尚硅谷 天禹老师)
视频:[尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通]https://www.bilibili.com/video/BV1Zy4y1K7SH?vd_source=10e3dfac9 ...
- 适合新手练手,用Python爬取OPGG里英雄联盟英雄胜率及选取率,详细讲解加注释(建议收藏练手)
今天来个简单的小项目,适合新手拿来练手,在OPGG上爬取英雄联盟里的法师,ADC,打野,辅助所有英雄的胜率及选取率,是不是感觉很高大上,但是却很简单,只要用三十多行代码就能实现,详细讲解每一行代码加注 ...
最新文章
- 【Netty】传输(Transport)
- Hejr 6-8 - aamsaafanqs Blog - Blogster
- dede文章调用时过滤调 body里面的style属性和值
- C# 静态方法和属性 图书管理
- 湖北2018年GDP同比增长7.8% 进出口增速有所回升
- D - Power Strings POJ - 2406
- Python+OpenCV:K-Means聚类
- 搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了(五)
- python pywin32模块详解_python模块win32com用法详解
- 计算机毕业设计java+jsp旅游网站(源码+系统+mysql数据库+Lw文档)
- 如何快速给PDF挂接目录书签
- 怎么用手机测量CAD图纸中的立面面积?
- PNP与NPN三极管开关特性
- 提现业务流程介绍与设计
- 通过单片机定时器输出周期为1s的方波,驱动LED灯闪烁
- virtualxposed使用教程_VirtualXposed 使用方法教程 —— 教您不 Root 用上强悍的 Xposed 框架 | 软件库...
- iwork8 Android86,酷比魔方(CUBE)IWORK8 U80GT平板电脑整体评测-ZOL中关村在线
- Linux进程调度 - CFS调度器 LoyenWang
- 利用百度AI平台+pyqt5实现自动识别银行卡小工具
- 常见六大 Web 安全攻防解析
热门文章
- 中兴f650 2.0.3 固件降级_年轻人的5G视频手机 中兴天机Axon11 SE 5G定档6.1
- AxureRP使用技巧
- linux查cpu和内存配置,Linux查看CPU和内存的配置信息
- java 周次_java处理年、月、周次以及起至日期大全
- PowerDesigner导入Excel表
- cocos2dx实例开发之2D横版跑酷
- 如何让玩家更有“代入感”? 《极乐迪斯科》叙事分析
- 后台添加商品和添加到购物车
- 希捷3T硬盘松下mov变0字节视频恢复修复方法
- 计算机音乐教程图片大全,图片+音乐做成视频简单两步操作,一图流音乐视频制作教程...