我如何使用 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