AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-608290

O'Niel's questions

Martin Hope
O'Niel
Asked: 2022-02-01 03:04:13 +0800 CST

将位置块添加到缓存文件会使这些文件返回 404

  • 0

我想使用 Nginx 缓存一些静态文件。但我不知何故无法让它工作。

这是我的nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    #multi_accept on;
}


http {

    #GZIP
    gzip on;
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_min_length 256;
    gzip_types application/javascript application/json application/ld+json application/xml font/eot font/otf font/ttf text/css text/javascript text/plain text/xml;

    # SERVERS
    server {
            listen      80;

        server_name example.com;
        if ($http_host ~* ^www\.(.*)$ )
        {
            return 301 https://$1$request_uri;
        }

        return 301 https://$http_host$request_uri;
    }
    server {
        listen 443 ssl;

        if ($http_host ~* ^www\.(.*)$ )
        {
            return 301 $scheme://$1$request_uri;
        }


        #SSL
        ssl_certificate /root/.acme.sh/example.com/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/example.com/example.com.key;

        server_name example.com;

        # Pass all traffic to my webapplication
        location / {
            proxy_set_header Host $host;
            proxy_pass http://localhost:8080;
        }

        #Browser caching
        location ~* \.(js|css)$ {
            expires 180d;
            add_header Pragma "public";
            add_header Cache-Control "public";
        }
        location ~* \.(jpg|jpeg|png|webp|woff|woff2|ttf)$ {
            expires 365d;
            add_header Pragma "public";
            add_header Cache-Control "public";
        }

    }
}

问题出在“浏览器缓存”部分。启用此代码块时,我的网站会加载,但所有 css 文件、javascript 文件和图像都返回 404。就像这些文件忽略了我的location /.

我能够通过复制/粘贴来解决这个问题

proxy_set_header Host $host;
proxy_pass http://localhost:8080;

在我所有的location块中,但这并不是很优雅,实际上让我的网站感觉慢了很多......

我还尝试将location浏览器缓存的两个块移动到块中location \,以便后者充当“父级”。但这并没有机会图像等的行为返回 404。

如何在 Nginx 中配置静态文件的缓存?

编辑: 我将以下内容添加到我的http-block 中:

  map $uri $cache_control {
                ~/Website/assets/media/images    "public, no-transform";
        }
        map $uri $expire {
            ~/Website/assets/media/images   365d;
        }

在我的server-block 中添加了以下内容:

 expires $expire;
                add_header Cache-Control $cache_control;

没有任何东西被缓存。

cache nginx
  • 2 个回答
  • 234 Views
Martin Hope
O'Niel
Asked: 2022-01-13 01:11:11 +0800 CST

子域可以在没有在 DNS 记录中注册的情况下工作吗/ [重复]

  • 0
这个问题在这里已经有了答案:
通配符 DNS 记录是不好的做法吗? (9 个回答)
8 个月前关闭。

我在我的本地主机上创建了一个 Web 应用程序,它提供了一个平台,可以在该平台上为不同的企业提供自己的页面。每个企业都有自己的子域。

所以,business1.example.com business2.example.com business3.example.com ...

在我的本地主机上,我的代码只是将 URL 解释为字符串并提取子域部分。如果该子域链接到我的数据库中的业务,则提供页面,否则返回 404。

这在我的本地主机上运行良好。但这也可以在互联网上运行吗?

  • 可能有无限数量的子域
  • sfkojfioej.example.com 也可以用作 URL,但只返回 404。
  • 子域未在 DNS 记录中注册。

尤其是最后一点让我很困扰。是否可以在不注册 DNS 记录中的每个子域的情况下实现这一目标?

subdomain
  • 1 个回答
  • 56 Views
Martin Hope
O'Niel
Asked: 2022-01-07 17:54:57 +0800 CST

两个 Web 应用程序的 Nginx 反向代理

  • 0

我有两个应用程序。

  • Laravel 应用程序- 只是一个动态网站。没有数据知识。使用 AJAX 请求从第二个应用程序获取所有数据。上运行127.0.0.1:8000。
  • Rust 应用程序- 一个包含所有业务逻辑和数据访问的 Web 应用程序。上运行127.0.0.1:8080。

这两个应用程序都需要可从 URL 访问example.com。为此,我想使用 Nginx 反向代理。我已经能够将所有请求重新路由到我的 Laravel 应用程序。

events {}
http {
    server {
        listen 80;

        # Website
        location / {
            proxy_pass http://127.0.0.1:8000;
        }
        
    }
}

当 Laravel 应用程序工作时,我实际上需要以下 Nginx 配置:

  • /news像, /, /about, ,... 这样的特定页面/contact应该被重定向到127.0.0.1:8000.
  • 注意:上面的页面可以包含 GET 参数,例如/news?article=abc.
  • 所有其他请求都需要重定向到127.0.0.1:8080.
  • 注意:127.0.0.1:8080 通常可以包含一个子域。但是这个子域需要像通配符一样,并且在配置时是未知的。示例:bussiness1.example.com, bussiness2.example.com, businnesX.example.com,...

子域返回一个个性化页面,无数企业可以在 example.com 上请求该页面。

我将如何实现这种配置?我在想这样的事情?

#PSEUDO
events {}
http {
    server {
        listen 80;

        # Website
        location / {
            proxy_pass http://127.0.0.1:8000;
        }
        location /news {
            proxy_pass http://127.0.0.1:8000;
        }
        location /about {
            proxy_pass http://127.0.0.1:8000;
        }

        # Application
        location * {
            proxy_pass http://127.0.0.1:8080;
        }

    }
}

编辑关于 Tero 的回答: 我需要一种用于子域的通配符。

 # Application catch-all
    location / {
        proxy_pass http://$subdomain.$application;
    }

abc.example.com 需要去 abc.127.0.0.1:8080 def.example.com 需要去 def.127.0.0.1:8080 ...

我知道 IP 不能有子域,但不用担心。我用虚拟主机解决了这个问题。

编辑 2 - 将请求的子域传递给 proxy_pass:

server {
        listen 80;
        server_name *.website.com;
        server_name ~^(?<subdomain>.+)\.website\.com$;

        location / {
            proxy_pass http://$subdomain.vhost.local:8080;
        }
    }

这是将 dynamicxxx.website.com 重定向到 dynamicxxx.vhost.local:8080 的正确方法吗?

nginx reverse-proxy
  • 1 个回答
  • 831 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve