我如何使用 Nginx 在 Plone 4.3 中加载图像
How I load images in Plone 4.3 with Nginx
我遵循本教程 Plone Deplayoing Nginx 并在 NGINX 中创建了配置文件:
add_header X-Content-Type-Options "nosniff";
#add_header Content-Security-Policy "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";
# This specifies which IP and port Plone is running on.
# The default is 127.0.0.1:8080
upstream plone {
server 127.0.0.1:8081;
}
# Redirect all www-less traffic to the www.site.com domain
# (you could also do the opposite www -> non-www domain)
server {
listen 80;
server_name asp.pro.br;
rewrite ^/(.*) http://www.asp.pro.br/ permanent;
}
server {
listen 80;
server_name www.asp.pro.br;
access_log /var/log/nginx/asp.pro.br.access.log;
error_log /var/log/nginx/asp.pro.br.error.log;
# Note that domain name spelling in VirtualHostBase URL matters
# -> this is what Plone sees as the "real" HTTP request URL.
# "Plone" in the URL is your site id (case sensitive)
location / {
proxy_pass http://127.0.0.1:8081/VirtualHostBase/http/asp.pro.br:80/aspax/Portal/VirtualHostRoot/;
}
}
但是在浏览器中打开时无法加载图像,我该如何解决?
[解决方案]
当 DNS 发送 WWW
时,您必须在 proxy_pass
中设置:
proxy_pass http://127.0.0.1:8081/VirtualHostBase/http/asp.pro.br:80/aspax/Portal/VirtualHostRoot/;
让我们首先尝试确定您的 Plone 是否可以正常处理图像。
为此,你应该直接调用它,而不需要像 nginx 这样的代理在前面。
如果图像正常工作,那么我们必须修复您的 nginx 配置。
尝试在 nginx 中不使用 Content-Security-Policy 部分,看看它是否可以正常工作,这将是我的下一步。
每个应用程序的工作方式都不同,因此我们应该关注 Plone 需要什么才能达到 运行。幸运的是,这并不多。
如果 Plone 在这个设置中与 Squid 一起工作,那么它可能是 nginx 配置。
这是一个有效的:
server {
listen 164.177.xx.xxx:80;
server_name derico.de;
location / {
proxy_pass http://127.0.0.1:8090/VirtualHostBase/http/derico.de:80/Plone/VirtualHostRoot/;
}
}
或使用 https:
server {
listen 164.177.xx.xxx:443;
server_name derico.de;
location / {
proxy_pass http://127.0.0.1:8090/VirtualHostBase/https/derico.de:443/Plone/VirtualHostRoot/;
}
}
此处的站点 ID 是“Plone”,因为它是“aspax”。
确保 proxy_pass 指令中的主机名与 server_name 中的主机名相同。这包括您示例中的 www。
可以在此处找到更高级和更紧凑的示例:http://mrtango.planetcrazy.de/smart-compact-vhost-config-for-nginx-webserver-as-https-proxy-for-plone-cms.html
我遵循本教程 Plone Deplayoing Nginx 并在 NGINX 中创建了配置文件:
add_header X-Content-Type-Options "nosniff";
#add_header Content-Security-Policy "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";
add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'";
# This specifies which IP and port Plone is running on.
# The default is 127.0.0.1:8080
upstream plone {
server 127.0.0.1:8081;
}
# Redirect all www-less traffic to the www.site.com domain
# (you could also do the opposite www -> non-www domain)
server {
listen 80;
server_name asp.pro.br;
rewrite ^/(.*) http://www.asp.pro.br/ permanent;
}
server {
listen 80;
server_name www.asp.pro.br;
access_log /var/log/nginx/asp.pro.br.access.log;
error_log /var/log/nginx/asp.pro.br.error.log;
# Note that domain name spelling in VirtualHostBase URL matters
# -> this is what Plone sees as the "real" HTTP request URL.
# "Plone" in the URL is your site id (case sensitive)
location / {
proxy_pass http://127.0.0.1:8081/VirtualHostBase/http/asp.pro.br:80/aspax/Portal/VirtualHostRoot/;
}
}
但是在浏览器中打开时无法加载图像,我该如何解决?
[解决方案]
当 DNS 发送 WWW
时,您必须在 proxy_pass
中设置:
proxy_pass http://127.0.0.1:8081/VirtualHostBase/http/asp.pro.br:80/aspax/Portal/VirtualHostRoot/;
让我们首先尝试确定您的 Plone 是否可以正常处理图像。 为此,你应该直接调用它,而不需要像 nginx 这样的代理在前面。 如果图像正常工作,那么我们必须修复您的 nginx 配置。 尝试在 nginx 中不使用 Content-Security-Policy 部分,看看它是否可以正常工作,这将是我的下一步。 每个应用程序的工作方式都不同,因此我们应该关注 Plone 需要什么才能达到 运行。幸运的是,这并不多。 如果 Plone 在这个设置中与 Squid 一起工作,那么它可能是 nginx 配置。 这是一个有效的:
server {
listen 164.177.xx.xxx:80;
server_name derico.de;
location / {
proxy_pass http://127.0.0.1:8090/VirtualHostBase/http/derico.de:80/Plone/VirtualHostRoot/;
}
}
或使用 https:
server {
listen 164.177.xx.xxx:443;
server_name derico.de;
location / {
proxy_pass http://127.0.0.1:8090/VirtualHostBase/https/derico.de:443/Plone/VirtualHostRoot/;
}
}
此处的站点 ID 是“Plone”,因为它是“aspax”。
确保 proxy_pass 指令中的主机名与 server_name 中的主机名相同。这包括您示例中的 www。
可以在此处找到更高级和更紧凑的示例:http://mrtango.planetcrazy.de/smart-compact-vhost-config-for-nginx-webserver-as-https-proxy-for-plone-cms.html