4

我有 Apache 2.2.15 配置了 Mod_Proxy 和 Mod_SSL 并在 RHEL 6.3 上提供 CherryPy Web 应用程序。我唯一苦苦挣扎的是让 Apache 为网站的静态内容(*.js、*.css、*.jpg)提供服务。这是我的 VirtualHost 条目...

<VirtualHost mydomain.com:443>
ServerAdmin support@mydomain.com
ServerName mydomain.com
ProxyPreserveHost On
SSLProxyEngine On
DocumentRoot /var/www/html/mydomain

SSLEngine on
SSLCertificateKeyFile /etc/ssl/myserver.key
SSLCertificateFile /etc/ssl/mydomain_com.crt
SSLCertificateChainFile /etc/ssl/mydomain_com.ca-bundle

# this prevents the follow URL path from being proxied
ProxyPass static/ !

# setup the proxy
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
ProxyPass / http://www.mydomain.com:8080/
ProxyPassReverse / http://www.mydomain.com:8080/
</VirtualHost>

例如,我的 css 文件的路径如下...

/var/www/html/mydomain/static/style.css

因为我在导航到时强制整个站点处于 https 中

https://www.mydomain.com/static/style.css

或者

http://www.mydomain.com/static/style.css

我的浏览器告诉我找不到页面 (404)。谁能看到我做错了什么?

编辑:看来 Apache 仍在代理 /static ...我在访问我的 Apache 访问日志中的 /static/style.css 时发现了这个重定向...

xxx.xxx.xxx.xxx - - [17/Sep/2012:08:46:06 -0400] "GET /static/style.css HTTP/1.1" 301 337 "https://www.mydmain.com/Home/" "Mozilla/5.0 (X11; Linux x86_64; rv:10.0.7) Gecko/20120826 Firefox/10.0.7"

有谁知道为什么会这样?

提前致谢!

安德鲁

4

2 回答 2

2

尝试在 ProxyPass 之前为您的静态文件夹添加别名。它对我来说就像冠军一样,

Alias /static/ /var/www/html/mydomain/static/
于 2013-08-21T10:47:11.613 回答
1

如果静态文件位于“主”源文件夹下,我建议告诉 CherryPy 为样式表、图像、js 等提供特定文件夹

我个人生成配置,然后在安装应用程序时使用该配置,例如:

app = cherrypy.tree.mount(Root(), script_name="", config=somefile.get_config())

使用 CherryPy 提供静态文件的示例。

  • /css是您在模板或 HTML 中使用的路径。
  • 生成指向您的索引文件的路径(如果您没有从索引中启动 quickstart() ,os.path.abspath(os.path.join(os.path.dirname(__file__)则生成其他脚本)
  • 上面的路径后面是静态内容文件夹的相对路径

文件:

##somefile
def get_config():
    return {
        '/':
        {
            'tools.encode.on': True,
            'tools.encode.encoding': 'UTF-8'
        },
        '/css':
        {
            'tools.staticdir.on': True,
            'tools.staticdir.dir': os.path.abspath(os.path.join(os.path.dirname(__file__), 'relative/path/to/your/css/folder'))
        },
        '/js':
        {
            'tools.staticdir.on': True,
            'tools.staticdir.dir': os.path.abspath(os.path.join(os.path.dirname(__file__), 'relative/path/to/your/js/folder'))
        }
    }
于 2012-12-14T13:03:30.897 回答