前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >day108&day109部分-Linux安装和配置nginx

day108&day109部分-Linux安装和配置nginx

原创
作者头像
少年包青菜
修改2020-04-15 17:59:21
5230
修改2020-04-15 17:59:21
举报
文章被收录于专栏:Python 学习Python 学习

1.gnginx下载与安装

1.1下载

代码语言:javascript
复制
wget -c https://nginx.org/download/nginx-1.12.0.tar.gz

1.2安装

1.2.1解压缩

代码语言:javascript
复制
# cd 到下载目录中
  tar -zxvf nginx-1.12.0

1.2.2安装

代码语言:javascript
复制
# cd 到解压目录里面
  ./configure --prefix=/opt/nginx1-12/ --with-http_ssl_module --with-http_stub_status_module

1.2.3执行编译和安装

代码语言:javascript
复制
# 执行完上一步  
  make && make install 

1.2.4检查安装是否成功,一定存在下面四个文件夹,少一个都是失败

代码语言:javascript
复制
6.在/opt/nginx1-12/ 安装好nginx的目录,找到一个sbin的文件夹,找到nginx的启动命令,然后启动nginx服务
# 检查nginx安装后的目录,ll /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启动脚本目录

1.2.5运行nginx的相关命令

代码语言:javascript
复制
./sbin/nginx               # 直接启动 nginx 服务
./sbin/nginx -s stop       # 关闭 nginx 服务
./sbin/nginx -s reload     # 平滑重启(修改了nginx配置文件,不重启服务就加载配置且生效)
../sbin/nginx -t           # 检测nginx.conf 配置文件的语法正确性

1.2.6检查运行 nginx

2.nginx访问多域名配置

2.1编辑 nginx 配置文件

代码语言:javascript
复制
vim ./conf/nginx.conf
代码语言:javascript
复制
# 多虚拟主机的配置
# (复制多个 server )

1.修改nginx底下的conf/nginx.conf ,修改信息如下
		server {
			listen       80;
			server_name  www.test1.com;
			location / {
				# 该服务的网页文件在 /data/test1 下
				root   /data/test1;
				# 默认访问网页 index 文件可自己编辑
				index  test-index.html;
			}
			}
		server {
			listen       80;
			server_name  www.test2.com;
			location / {
				# 该服务的网页文件在 /data/test2 下
				root   /data/test2;
				# 默认访问网页 index 文件可自己编辑
				index  test2-index.html;
			}
			}
代码语言:javascript
复制
2.完成上述配之后
    ../sbin/nginx -t  #检测语法
    ../sbin/nginx -s reload #平滑重启 

2.2编辑 Windows 的 host 文件

代码语言:javascript
复制
# 写入到本地dns解析文件,由于我是在windows中通过浏览器访问,应该在windows的hosts文件中添加记录
# hosts文件就是一个本地dns(就是将域名转化成ip地址)强制解析的文件

# windows的hosts文件就在这里:C:\Windows\System32\drivers\etc\hosts ,写入如下信息

# 虚拟机的 ip
192.168.1.162   www.test1.com
192.168.1.162   www.test2.com

3.nginx状态模块功能

代码语言:javascript
复制
1.在 nginx.conf 的 server 中,添加一个参数即可
      	server {
			listen       80;
			server_name  www.test2.com;
			location / {
				# 该服务的网页文件在 /data/test2 下
				root   /data/test2;
				# 默认访问网页 index 文件可自己编辑
				index  test2-index.html;
			}
			
			# 在server  里面添加这个即可
			location /status {
                stub_status on;
            }
            
			}

4.nginx访问日志功能

代码语言:javascript
复制
1.编辑 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;
代码语言:javascript
复制
2.log_format main 的参数详解

    $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
代码语言:javascript
复制
3.tail -f ./logs/access.log 就可以查看访问日志

# 内容如下
192.168.12.60 - - [06/Dec/2018:11:24:04 +0800] "GET / HTTP/1.1" 304 0 "-" 
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) 
Chrome/70.0.3538.110 Safari/537.36" "-"

5.nginx的location配置动态静态资源

代码语言:javascript
复制
# location存在于 nginx.conf 的 server 中
# 一个 server 可以配置多个 location

5.1动态资源请求,一般就是默认 location 配置

代码语言:javascript
复制
# 我的请求发给nginx的时候,nginx不做处理,直接返回给django

# www.xxx.com/login
# www.xxx.com/register

location / {
 uwsgi_pass http:0.0.0.0:8000;
}

5.2静态资源请求

代码语言:javascript
复制
# 如果你想请求图片资源,就直接丢给nginx去做处理
# ginx处理静态资源更为优秀

# lias 给location配置一个文件工作目录
# 使用待定
# www.xxx.com/xxx.jpg

location ~* \.(gif|jpg|jpeg|mp4)$ {
 alias    /data/static/; 
}

6.nginx正向反向代理的概念

代码语言:javascript
复制
# 正向代理
# 代理的是客户端
代码语言:javascript
复制
# 反向代理
# 代理的是服务端

6.1反向代理设置

代码语言:javascript
复制
server {
       listen 80;
		  server_name  www.xxx.com;
		  location / {
		  proxy_pass http://192.168.1.162;  # 动态请求直接转发给 该ip; 
}

7.nginx负载均衡的简单使用

7.1环境准备

代码语言:javascript
复制
# 环境准备,准备3台服务器
    192.168.1.161   nginx入口主机
    192.168.1.162   应用服务器1
    192.168.1.163   应用服务器2

7.2关闭所有的防火墙

7.3配置

7.3.1在nginx入口主机里配置 nginx.conf

代码语言:javascript
复制
1.修改配置文件nginx.conf ,写入如下配置

	# 定义负载均衡池名字叫做 mydjango
	upstream mydjango {   
		# 池子中存放2个服务器,默认轮训方式调度服务器
		server 192.168.1.162:8000; 
		server 192.168.1.163:8000;
		
		# 也可以根据权重分配访问率	
		# 被分发的概率是 30%
		# server 192.168.1.162:8000 weight=3; 
		# 被分发的概率是 70%
		# server 192.168.1.163:8000 weight=7;
}
	
	# root参数定义网页的根目录,可以写在虚拟主机内,局部变量
	# 如果写在server标签外,就是全局变量
	root html;
	
	# 虚拟主机1
	server {
	   listen 80;
	  # 访问域名
	  server_name  www.xxx.com;
	  location / {
	  
	  # 当请求发送到www.xxx.com的时候,匹配到 / 
	  # 转到上方负载均衡池
	  proxy_pass http://mydjango;
	  
	  # 包含语法参数,将一个配置文件添加到当前虚拟主机生效,这个文件要手动创建
	  # 这个proxy_params文件创建在/opt/nginx1-12/conf底下
	  include proxy_params;
}
}

7.3.1主机 proxy_params 的配置

代码语言:javascript
复制
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;

7.3.2部署应用服务器

代码语言:javascript
复制
# 配置 192.168.1.162 的应用服务器1
1.准备一个flask代码,运行  
pip3 install flask
2.准备代码  myflask.py 
	from flask import Flask
	app=Flask(__name__)
	@app.route('/')
	def hello():
	return "<h1>我是服务器1</h1>"
	if __name__=="__main__":
	app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py 


# 配置 192.163.1.163 的应用服务器2
1.准备一个flask代码,运行  
pip3 install flask
2.准备代码  myflask.py 
	from flask import Flask
	app=Flask(__name__)
	@app.route('/')
	def hello():
	return "<h1>我是服务器2</h1>"
	if __name__=="__main__":
	app.run(host='0.0.0.0',port=8000)
3.启动应用服务器
python3 myflask.py 

7.3.3.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式

代码语言:javascript
复制
# 访问自己的nginx负载均衡的ip地址,查看结果

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.gnginx下载与安装
    • 1.1下载
      • 1.2安装
        • 1.2.1解压缩
        • 1.2.2安装
        • 1.2.3执行编译和安装
        • 1.2.4检查安装是否成功,一定存在下面四个文件夹,少一个都是失败
        • 1.2.5运行nginx的相关命令
        • 1.2.6检查运行 nginx
    • 2.nginx访问多域名配置
      • 2.1编辑 nginx 配置文件
        • 2.2编辑 Windows 的 host 文件
        • 3.nginx状态模块功能
        • 4.nginx访问日志功能
        • 5.nginx的location配置动态静态资源
          • 5.1动态资源请求,一般就是默认 location 配置
            • 5.2静态资源请求
            • 6.nginx正向反向代理的概念
              • 6.1反向代理设置
              • 7.nginx负载均衡的简单使用
                • 7.1环境准备
                  • 7.2关闭所有的防火墙
                    • 7.3.1在nginx入口主机里配置 nginx.conf
                    • 7.3.1主机 proxy_params 的配置
                    • 7.3.2部署应用服务器
                    • 7.3.3.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式
                • 7.3配置
                相关产品与服务
                负载均衡
                负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档