我想做的事:
这是一个单页面的应用程序.在我的更改配置看起来像这样(并且它工作):
location / {
root /home/eshlox/projects/XXX/project/project/assets/dist;
try_files $uri $uri/ /index.html =404;
}
Run Code Online (Sandbox Code Playgroud)
我试过使用if语句:
location / {
set $social 1;
if ($http_user_agent ~* "facebookexternalhit") {
set $social UA;
}
if ($uri ~* "^/(\d+)$") {
set $social "${social}URL";
}
if ($social = UAURL) {
rewrite ^/(\d+)$ /api/content/item/$1?social=1;
}
root /home/eshlox/projects/XXX/project/project/assets/dist;
try_files $uri $uri/ /index.html =404;
}
Run Code Online (Sandbox Code Playgroud)
使用此配置,只有在条件为真或假的情况下,一切都按预期工作.如果其中一个条件为真且第二个条件为假(反之亦然),则nginx始终返回状态404.
我在nginx网站上找到了"IfIsEvil",我试图使用映射(在这种情况下我可以使用映射吗?)但我仍然无法解决这个问题.
有任何想法吗?
最好的祝福.
我想使用python和PIL或PythonMagick更改GIF动画图像的大小.我找不到解决方案.PIL和缩略图方法适用于jpg和png但不适用于gif.ImageMagick有命令mogrify/convert -resize'1280x1024>'但我找不到文档,我不知道如何用pythonmagick做到这一点.
谁知道解决方案?
在最坏的情况下,我使用os/subprocess并转换; -S
谢谢.
我正在尝试通过Cloudfront将文件上传到S3.我创建了一个名为my-files的存储桶.Bucket CORS设置:
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<AllowedMethod>HEAD</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
我创建了Cloudfront发行版.这是可能很重要的配置:
一般:
Delivery Method: Web
Alternate Domain Names (CNAMEs) files.example.com
Run Code Online (Sandbox Code Playgroud)
起源:
Origin Domain Name: my-files.s3.amazonaws.com
Restrict Bucket Access: Yes
Grant Read Permissions on Bucket: Yes, Update Bucket Policy
Run Code Online (Sandbox Code Playgroud)
行为:
Path Pattern: Default (*)
Origin: S3-my-files
Viewer Protocol Policy: HTTP and HTTPS
Allowed HTTP Methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
Whitelist Headers: Access-Control-Request-Headers, Access-Control-Request-Method, Origin
Object Caching: Use Origin Cache Headers …Run Code Online (Sandbox Code Playgroud) 我有一个基于Google Cloud Endpoints的API,我想使用JWT(Json Web Tokens)进行授权.我可以为每个包含令牌的请求设置Authorization标头,它可以正常工作.我知道Endpoints在Oauth2中使用了这个标题,这是我的问题.使用自定义令牌的授权标头是否正确?GAE日志:
D 12:38:44.375 Checking for id_token.
D 12:38:44.376 id_token verification failed: Unexpected encryption algorithm: u'HS256'
D 12:38:44.376 Checking for oauth token.
D 12:38:44.384 Oauth framework user didn't match oauth token user.
Run Code Online (Sandbox Code Playgroud)
看起来GAE试图将此令牌读作oauth令牌并且它不好,对吧?也许我应该在URL中发送我的令牌?像app-id.appspot.com/_ah/api/my_app/v1/users/get?jwt=TOKEN之类的东西.也许我不应该将JWT与Google Cloud Endpoints一起使用?
我想在字典中设置键和值.这是我做的一个例子.
class NestedDict(dict):
def __getitem__(self, key):
if key in self: return self.get(key)
return self.setdefault(key, NestedDict())
>>> c = NestedDict()
>>> c
{}
>>> c['a']['b'] = 'test'
>>> c['a']['c'] = 2
>>> c
{'a': {'c': 2, 'b': 'test'}}
>>> c['a']['c'] += 1
>>> c
{'a': {'c': 3, 'b': 'test'}}
>>> c['a']['d'] += 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +=: 'NestedDict' and 'int'
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?我希望能够使用+ =和 - =.当然,如果价值不存在,则+ = 1与= 1相同.也许有更好的解决方案?
谢谢.
python ×2
amazon-s3 ×1
dictionary ×1
file-upload ×1
gif ×1
imagemagick ×1
nginx ×1
pythonmagick ×1