我有一个具有以下功能的网站:用户访问www.mysite.com/page.php. 该页面上的 Javascript 调用 ajax APIwww.mysite.com/api.php并在同一页面上显示结果www.mysite.com/page.php
我害怕有人开始在自己的软件上使用我的 api.php,因为使用会www.mysite.com/api.php花费我一些钱。因此,我希望只有访问过该页面的www.mysite.com/page.php用户才能从www.mysite.com/api.php. 用户将无法登录我的网站。
这样做的正确方法是什么?我想我可以在用户访问page.php时启动一个会话,然后以某种方式首先检查api.php是否存在具有有效会话 ID 的会话?
我有一个与Nginx + Gunicorn一起运行的Flask应用程序通常没有问题.该应用程序仍在开发中,因此目前每小时只有一个请求.
问题是,Gunicorn似乎在上次重启后大约12-36小时后突然崩溃.当发生这种情况时,nginx仍然可以提供静态文件,但是即使Gunicorn进程仍然在服务器上运行,任何需要Gunicorn的东西都会返回500错误.通过重新启动Gunicorn sudo supervisorctl restart xxx(不需要nginx重启),问题总是在接下来的12-36小时内得到修复.到目前为止,问题已经发生了大约10次.是否有可能以某种方式改进日志记录或做其他事情?
Nginx conf(/ etc/nginx/sites-available/xxx_gunicorn):
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
access_log /var/log/nginx/xxx-access.log;
server_name 127.0.0.1 www.xxx.yy;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8000/;
}
location /static {
alias /opt/xxx/static/;
}
}
Run Code Online (Sandbox Code Playgroud)
主管conf启动gunicorn(/etc/supervisor/conf.d/xxx.conf)
[program:xxx]
command = gunicorn xxx:app -b localhost:8000 --debug --log-level debug --log-file /var/log/gunicorn.log --error-logfile /var/log/gunicorn.error.log --workers 2 --worker-connections 1000 --max-requests 100 --timeout …Run Code Online (Sandbox Code Playgroud)