网络应用的托管设置以及Nginx反向代理

网络应用是什么

我们都知道什么是app, 就是手机上的一个软件,点开就有很多功能可以使用,这种类型的软件我们称之为“移动应用“(mobile application);而当你打开浏览器浏览各种网页、进行各种操作的时候,你就是在使用网络应用(web application). 网络应用的很多功能依赖于和服务器的交互,大致的过程是你通过浏览器里看到的页面请求一些信息,然后浏览器告诉操作系统:“你帮我对ip地址是xxx.xxx.xxx.xxx的那台机器说[email protected]%[email protected]这些话,它回你什么你都告诉我“,操作系统空下来就帮浏览器传话了,收到回复以后也告诉了浏览器;最后浏览器阅读了收到的回复,组织了一下语言再呈现给你看。

一个服务器就是一台一直开着的电脑,也有CPU、内存、硬盘、主板这些东西。上述的过程有一个步骤是操作系统要向ip为xxx.xxx.xxx.xxx的机器传话,这台机器要能收到消息必须“在线“,所以服务器必须24小时开启。

托管设置有什么用

一般网络应用在开发阶段会通过 localhost:[port] 来访问,这时候开发人员只要保证应用能监听 localhost 即可,但是当应用部署到服务器上,开始24小时提供服务的时候,继续把监听范围仅限于 localhost 就不行了。监听 localhost 的意思是该应用允许访问的用户只有本机,也就是说自己跟自己玩它才愿意,换了生人就不玩了。要让它成为一个正经的网络应用,它需要允许“公共网络接口“ 0.0.0.0 也就是所有 ip 地址的连接。

我们来看一个 Flask 的例子,下面的代码片段给出一个最精简的 Flask 应用:

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello!'

if __name__ == '__main__':
    app.run(debug=True)

运行之后 Flask 只会允许localhost的连接,监听5000端口,如果把这个应用在服务器上运行,然后尝试通过 ip 地址访问就会失败;应该要让 Flask 允许公共网络接口的连接,使用 flask-manager:

from flask import Flask
from flask_script import Manager

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello!'

if __name__ == '__main__':
    manager.run()

将代码片段保存为 app.py, 然后使用 python app.py runserver --host 0.0.0.0 来启动服务器,这次能够通过 ip 地址访问。

Nginx反向代理是什么

网络上的请求是很复杂的,有人将 www 戏称为(wild weird web),一般的网络应用框架在设置白名单、黑名单、代理、重定向方面不如Nginx有效率,所以一般的后端架构都有一个 Nginx 做为中介来转发用户的请求,比如要把某个 url 的请求转发给flask应用的话就要在 Nginx 的配置文件中写:

location /yoururl {
    proxy_pass http://localhost:5000;
}
文章来源: 网络应用的托管设置以及Nginx反向代理

人吐槽 人点赞

猜你喜欢

发表评论

用户名: 密码:
验证码: 匿名发表

你可以使用这些语言

查看评论:网络应用的托管设置以及Nginx反向代理