linux 之nginx
目录
一.安装 二.启动 配置文件 三.多虚拟主机 三.nginx 反向代理 四.nginx负载均衡配置
一.安装
编译安装nginx:
1.解决依赖关系
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
2.下载源码包 wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
3.解压缩源码包 tar -zxvf nginx-1.12.0
4.在当前路径下通过configure这个脚本文件执行,释放makefile,然后指定安装nginx的路径,以及开启模块功能ssl与状态模块功能
./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module 指定安装目录 以及一些安装配置
5.编译且编译安装
make && make install
二.启动 配置文件
1. 进入 sbin/nginx nginx -V 查看版本
6.在/opt/nginx1-12/ 安装好nginx的目录,找到一个sbin的文件夹 ,启动nginx服务 命令 sbin/nginx就可以启动了
1.检查nginx安装后的目录, /opt/nginx1-12
drwxr-xr-x 2 root root 333 12月 6 09:32 conf 配置文件存放的目录, nginx.conf这个文件就是nginx的主配置文件
drwxr-xr-x 2 root root 40 12月 6 09:32 html 存放网页根目录的文件夹,存放了index.html **.html **.gif **.jpg
drwxr-xr-x 2 root root 6 12月 6 09:32 logs 日志目录
drwxr-xr-x 2 root root 19 12月 6 09:32 sbin nginx启动脚本目录
2.nginx的可执行命令
- rwx(user) r-x(group) r-x(other) 1 root(属主) root(属组) 5656000 12月 6 09:32 sbin/nginx
./sbin/nginx #直接启动nginx
./sbin/nginx -s stop
./sbin/nginx -s reload #平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
./sbin/nginx -t # 检测nginx.conf 配置文件的语法正确性
三.多虚拟主机
#虚拟主机1 nginx的主配置文件, nginx1-12/conf /nginx.conf 修改
server {
listen 80; 监听端口
server_name 0.0.0.0; #域名1 这里是nginx通过这个参数,来定位不同的虚拟主机
location / { # / 代表访问nginx的匹配路径
root /opt/html; 资源文件 #指明网页根目录在/data/huoying/文件夹下 存放静态文件 .htlm 图片视频...
index index.html index.htm; 访问域名时呈现的默认页面 必须有
# deny 192.168.1.103 拒绝一个ip地址 爬虫
}
#虚拟主机2 9 yy复制9行 t打印
server {
listen 80;
server_name www.s14hanjutv.com; #域2 这里是nginx通过这个参数,来定位不同的虚拟主机
location / { #代表访问nginx的匹配路径
root /data/hanju/; 资源文件 #指明网页根目录在/data/hanju/文件夹下 存放静态文件 .htlm 图片视频...
index index.html index.htm ; 默认首页 访问www.s14hanjutv.com 相当于访问www.s14hanjutv.com/index.html
}
多虚拟机 就可以 使用一个web服务 软件 展示多个域名 www.s14huoying.com www.s14hanjutv.com
2.重新加载nginx配置文件 ../sbin/nginx -t #检测语法 ../sbin/nginx -s reload #平滑重启 修改配置文件比重启
3.修改完后 创建所需要文件夹 /data/hanju/ 和文件资源 index.html tupian.jpg
4.写入到本地dns解析文件,由于我是在windows中通过浏览器访问,应该在windows的hosts文件中添加记录
hosts文件就是一个本地dns(就是将域名转化成ip地址)强制解析的文件
windows的hosts文件就在这里:C:\Windows\System32\drivers\etc\hosts ,写入如下信息
www.s14huoying.com 192.168.12.96 将 域名强制用 本机ip去解析
www.s14hanjutv.com 192.168.12.96
5.浏览器 访问时 www.s14hanjutv.com 就会访问到 index.html这个页面
如果 /data/hanju/ 下面有一个 tupian.jpg www.s14hanjutv.com /tupian.jpg 就会访问到图片
2.如果 index.html 写入 img标签 src='tupian.jpg' 就会从当前目录自动查找 就会在index页面显示这张页面
6.nginx状态模块功能: nginx1-12/conf /nginx.conf
1.在配置文件中server {}内,添加一个参数即可 就可以 域名/status 访问 查看信息
location /status {
stub_status on;
}
7. location语法
1. 一个server 两个
1.添加一个location /s14 {
alias /data/s14 # 先创建 存放文件位置 在s14文件下创建一个文件wyc.txt
} 就可以访问www.s14hanju.com/s14/wyc.txt 下的资源了
2.location 匹配优先级
# www.s14hanju.com/ # www.s14hanju.com/images/
1.location = / { 2.location ^~ /images/ {
我是代码1 我是代码2
} 精确匹配 } 匹配常规串,不做正则检查
# www.s14hanju.com/xxx.gif # www.s14hanju.com/av/xx资源
3.location ~* \.(gif|jpg|jpeg)$ { 4. location /av/ {
alias /data/img 我是代码4
} 正则匹配 ,通常静态资源 } 匹配常规字符,有正则优先正则
5.location / {
我是代码5 #如果你谁都没匹配到的话,默认走/,走django 处理动态请求,优先级最低
} 所有的location都不匹配后,默认匹配 3 5 常用
8.nginx访问日志功能: 反爬虫
1.在nginx1-12/conf /nginx.conf配置文件中,打开注释,nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; 打开注释,nginx.conf
参数详解:
$remote_addr 记录客户端ip
$remote_user 远程用户,没有就是 “-”
$time_local 对应[14/Aug/2018:18:46:52 +0800]
$request 对应请求信息"GET /favicon.ico HTTP/1.1"
$status 状态码
$body_bytes_sent 571字节 请求体的大小
$http_referer 对应“-” 由于是直接输入浏览器就是 -
$http_user_agent 客户端身份信息
$http_x_forwarded_for 记录客户端的来源真实ip 97.64.34.118
打开了功能之后,可一通过access_log查看用户身份信息
9. nginx的错误页面优化:
1.在配置文件中添加 nginx1-12/conf /nginx.conf
server {
listen 80;
server_name www.s14huoying.com;
location / {
#指明网页根目录在/opt/html/文件夹下
root /data/huoying;
index index.html index.htm;
deny 192.168.12.120;
error_page 400 401 402 404 /40x.html; 出这些错误时 访问40x.htlm页面 必须存在 root指定目录
#当请求来自于wwww.s14huoying.com/status/
三.nginx 反向代理
概念 创建两个nginx 服务 一个ip 是 192.168.1.103 一个ip是192.168.1.114
第一个nginx 服务 在主配置文件nginx.conf 中写入一个server
server {
listen 80;
server_name www.s14huoying.com;
location / {
proxy_pass http://192.168.1.114;
}
#浏览器当请求 www.s14huoying.com 时 第一个nginx 服务请求来源是浏览器的IP地 址
然后会直接转接到 第二个nginx服务去请求资源 第二个nginx 服务 显示的请求 来源是 第一个nginx的ip地址
四.nginx负载均衡配置
1.环境准备,准备3台服务器
192.168.119.128 nginx入口node1 负载均衡器
192.168.119.130 web01
192.168.119.133 web02
2.关闭所有机器的防火墙
3.在node1节点上配置负载均衡配置(发牌人)
1.修改配置文件nginx.conf ,写入如下配置
upstream s14django { #定义负载均衡池名字叫做wycflask 与sever 同级
server 192.168.119.130:8000; #池子中存放2个服务器,默认轮训方式调度服务器
server 192.168.119.133:8000; 当访问 负载均衡器 时 接入这两个接口
}
root html; #root参数定义网页的根目录,可以写在虚拟主机内,局部变量 #如果写在server标签外,就是全局变量
负载均衡server 配置
server {
listen 80;
server_name 192.168.119.128 ;
location / { #当请求发送到www.s14huoying.com的时候,匹配到 / ,就执行以下代码
proxy_pass http://s14django; proxy_pass这个指向 upstream负载均衡池中的IP地址
include /opt/nginx1-12/conf/proxy_params; #这个proxy_params文手动件创建在/opt/nginx1-12/conf底下
} } #包含语法参数,将一个配置文件添加到当前虚拟主机生效
2.手动创建这个参数文件
touch /opt/nginx1-12/conf/proxy_params
写入信息
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
4.配置 web01 的应用服务器 5.配置web02的应用服务器
1.准备一个flask代码,运行
pip3 install flask
2.准备代码 myflask.py 2.准备代码 myflask.py
from flask import Flask from flask import Flask
app=Flask(__name__) app=Flask(__name__)
@app.route('/') @app.route('/')
def hello(): def hello():
return "<h1>我是web01</h1>" return "<h1>我是web01</h1>"
if __name__=="__main__": if __name__=="__main__":
app.run(host='0.0.0.0',port=8000) app.run(host='0.0.0.0',port=8000)
3.启动应用服务器 3.启动应用服务器
python3 myflask.py python3 myflask.py
这样访问 192.168.119.128 这个 IP地址时 会默认轮询 访问到 两个网页(两个web地址)
负载均衡池 分配权重
upstream s14django {
server 192.168.119.130:8000 weight =3; 访问时30%使用到web01服务器
server 192.168.119.133:8000 weight=7; 访问时70%使用到web02服务器 ,可将性能高的web服务器设置高值
}
linux 之nginx相关推荐
- Linux环境Nginx安装多版本PHP
关于Linux环境Nginx安装与调试以及PHP安装参考此文即可:http://blog.csdn.net/unix21/article/details/8544922 linux版本:64位Cent ...
- Django+Linux+Uwsgi+Nginx项目部署文档
Django+Linux+Uwsgi+Nginx项目部署文档 WSGI 在生产环境中使用WSGI作为python web的服务器 WSGI:全拼为Python Web服务器网关接口,Python We ...
- linux下nginx+python+fastcgi部署总结(web.py版)
2019独角兽企业重金招聘Python工程师标准>>> 在上一篇文章linux下nginx+python+fastcgi部署总结(django版)中,我们部署了nginx+djang ...
- Linux下Nginx编译安装后的开机自启动设置
Linux下Nginx编译安装后的开机自启动设置 一.查看当前Nginx启动状态 二.而配置Nginx相关服务文件 三 .设置nginx命令 四.设置开机启动 五.测试开机启动 一.查看当前Nginx ...
- Linux下Nginx编译安装过程详解
Linux下Nginx编译安装过程详解 一.Nginx介绍 二.Nginx源码下载 1.打开Nginx官网 2.下载官网的源码包 三.Nginx源码安装 1.解压源码包 2.安装开发包组及环境 3.编 ...
- Ubuntu Linux配置Nginx+MySQL+PHP+phpMyAdmin详细步骤
博主之前一直用的是apache,随着网站负荷量增高,感觉apache稍微有点力不从心了.随着nginx越来越流行,而且其功能强大,博主准备采用nginx作为自己的服务器啦. 每当到了环境配置的时候,博 ...
- linux window nginx性能,Nginx负载均衡搭建(Window与Linux)
windows上搭建nginx负载均衡 1.准备几台http服务器软件,这里选用一台apache一台tomcat apache(windows)下载链接:https://www.apachehaus. ...
- linux下使用nginx搭建集群,CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群第一步)
CentOS(linux) 下Nginx的安装(Nginx+Tomcat集群) CentOS 7.4(腾讯云) pcre库 zlib库 openssl Nginx服务器 安装gcc g++开发类库 y ...
- Linux+.NetCore+Nginx搭建集群
本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...
- nginx 在阿里云怎么安装mysql_阿里云Linux服务器安装 nginx+mysql+php
阿里云Linux服务器安装 nginx+mysql+php 步骤 1.登录服务器 2.下载安装包 3.将安装包上传到服务器的/home目录下 注:使用rz sz命令进行本地和服务器间的上传.下载,安装 ...
最新文章
- 一次excel的countifs的成功应用
- Servlet 2.0 Servlet 3.0 新特性
- 养成一个习惯需要多久?
- 编程开发中最浪费时间和资源的7个错误
- 2020-12-11 图片格式互转:base64、PIL Image opencv cv2互转
- tableau双折线图_Tableau可视化之多变条形图
- OC-成员变量的作用域
- eclipse不进入断点_Eclipse 调试中不支持运行到断点问题
- Joomla!程序中加载JS和CSS的方法
- 【转】认识 C++ 中的 explicit 关键字
- 微软投资混合连接,发布本地数据网关
- Ubuntu 12.04 部署 PostGIS 2.1
- 关于FND_PROFILE与FND_GLOBLE
- Maven 使用本地Tomcat9 一键启动和热部署
- 第三讲 信息资产的分类与控制
- 图片服务器的架构演进
- 软件可靠性指标mtbf测试评估,产品可靠性指标预计
- JS网页特效实例:让网页前进和后退
- 二叉树中已知前序和中序求其后序(图解加技巧让你轻松掌握)
- 《阿里云天池大赛赛题解析(深度学习篇)》学习笔记(1)自然语言处理基础