我几乎所有nodejs应用程序中都有类似的项目结构和目录,我通过nginx转发代理。 结构如下:
/var/srv -/app1 -/public -/css -/js -/img -/app2 -/public -/css -/js -/img -/app3 -/public ......
希望你明白了。 现在我已经硬编码服务静态文件代码在Nginx的每个项目提供位置和别名,但我想这样的事情:
location /$app_var/public/(js or css or img or other static content) {
然后将其别名为
alias /var/srv/$app_var/public/(js or css or img or other static content)
以便它可以根据项目的目录提供静态内容,我不必手动指定每个项目的位置。 如果我没有更好地解释它,请做评论。 谢谢 :)
我目前的configuration:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /srv/www/; index index.html index.htm; server_name example.com www.example.com; rewrite ^/(.*) https://nulll.me/$1 permanent; } server { listen 443; server_name example.com example.com; root /srv/www/; index index.html index.htm; ssl on; ssl_certificate /home/---------------.crt; ssl_certificate_key /home/------------.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers AES256+EECDH:AES256+EDH:!aNULL; location / { try_files $uri $uri/ =404; } location /app1 { alias /srv/www/watch/; proxy_pass http://127.0.0.1:5000; proxy_http_version 1.1; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_redirect off; } #simillarly more apps location /app1/public/img { alias /srv/www/app1/img/; access_log off; expires max; } # simillarly for /css , /js and for each website. }
使用正则expression式?
像这样的东西应该使它:
location ~ ^/(?<app>[^/]+)/public/(?<dir>[^/]+)/(?<file>[^/]+)$ { alias /var/srv/$app/public/$dir/$file; }