使用 Nginx 提供静态内容
配置 Nginx 高效提供静态文件和资源,优化 Web 应用的性能。
使用 Nginx 提供静态内容 是 CoddyKit 上的免费 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
What is Static Content?
When you visit a website, you often see a mix of content. Some of it changes frequently (like news feeds), and some stays the same.
Static content refers to files that are delivered to the user exactly as they are stored. They don't change based on who is viewing them or when.
- HTML files: The structure of your web pages.
- CSS files: Styles and visual presentation.
- JavaScript files: Interactive elements and client-side logic.
- Images: JPG, PNG, GIF, SVG.
- Fonts: Web fonts like TTF, WOFF.
Nginx is incredibly efficient at serving these static files.
Setting the Root Directory
To tell Nginx where to find your static files, you use the root directive. This specifies the base directory for your website's content.
When Nginx receives a request, it appends the requested URI to the root path to locate the file.
http {
server {
listen 80;
server_name example.com;
root /var/www/mywebsite; # Nginx looks for files here
}
}Location Blocks for Paths
The location block is crucial for directing Nginx how to handle different types of requests based on their URL path.
You can define specific rules for requests to / (the root of your site), /images/, /css/, or any other path.
server {
# ...
root /var/www/mywebsite;
location / {
# Rules for requests to the root path
}
location /images/ {
# Rules for requests to /images/...
}
}Serving a Basic HTML Page
Let's combine root and location / to serve a simple HTML page. Nginx will look for index.html by default if you include the index directive.
If a request comes for http://localhost/, Nginx will try to find /usr/share/nginx/html/index.html.
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location / {
index index.html index.htm; # Try to serve index.html or index.htm
}
}Handling CSS and JavaScript
You don't always need separate location blocks for every file type. If the root directive is set correctly, Nginx will serve files like /css/style.css or /js/app.js directly.
However, you can use specific location blocks for fine-grained control, like applying specific caching rules to certain file types.
server {
listen 80;
server_name myapp.com;
root /var/www/myapp/public;
location / {
index index.html;
}
location ~* \.(css|js)$ {
# This matches .css or .js files
# Could add specific headers or caching here
add_header X-Content-Type-Options nosniff;
}
}The 'index' Directive
The index directive tells Nginx which files to look for when a request is made for a directory, not a specific file.
For example, if a user requests http://example.com/blog/, Nginx will first look for index.html inside the blog directory. If not found, it will try index.php, and so on.
server {
# ...
root /var/www/mywebsite;
location / {
index index.html index.php default.html; # Order matters!
}
}Understanding MIME Types
MIME (Multipurpose Internet Mail Extensions) types are labels that identify the type of content a file holds, like text/html for HTML documents or image/jpeg for JPEG images.
When Nginx serves a file, it sends a Content-Type HTTP header with the appropriate MIME type. This tells the browser how to interpret the file.
Nginx usually has a built-in mime.types file that maps file extensions to their correct MIME types, so you rarely need to configure this manually for common static files.
Caching for Performance
To optimize performance, Nginx can instruct browsers and proxy servers to cache static files. This means repeat visitors don't have to download the same files again.
The expires directive sets the Expires and Cache-Control HTTP headers, telling clients how long they can store a file before requesting it again.
server {
# ...
location ~* \.(jpg|jpeg|gif|png|css|js|ico)$ {
expires 30d; # Cache these files for 30 days
add_header Cache-Control "public, no-transform";
}
location ~* \.html$ {
expires 1h; # HTML files might change more often, cache for 1 hour
add_header Cache-Control "public, no-transform";
}
}Quick Check: Static Content
Consider the following Nginx configuration snippet:
server {
listen 80;
server_name example.com;
root /var/www/myproject/public;
location / {
index index.html;
}
location /assets/ {
expires 7d;
}
}If a request comes for http://example.com/assets/image.png, where will Nginx look for the image.png file?
Recap & Next Steps
Great job! You've learned the fundamentals of serving static content with Nginx.
- The
rootdirective defines the base directory for your files. locationblocks help you apply specific rules based on the request URL.- The
indexdirective specifies default files for directory requests. - Nginx automatically handles MIME types for most files.
- Using the
expiresdirective improves performance by enabling browser caching.
Efficiently serving static content is a core strength of Nginx, making your web applications faster and more responsive. In upcoming lessons, we'll dive into more complex Nginx configurations!
常见问题解答
「使用 Nginx 提供静态内容」课时是免费的吗?
是的 — 「使用 Nginx 提供静态内容」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课程的其余内容,请升级到 CoddyKit PRO。 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课程共包含 4 节课。
「使用 Nginx 提供静态内容」这节课中我会学到什么?
配置 Nginx 高效提供静态文件和资源,优化 Web 应用的性能。 你通过在浏览器中直接运行的动手代码来练习 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway),全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 需要有经验吗?
无需任何先前经验。CoddyKit 上的 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「使用 Nginx 提供静态内容」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课中编写并运行代码吗?
能。每节 API Gateway & Reverse Proxy (Nginx + Spring Cloud Gateway) 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Nginx 安装与设置
- Nginx 基础配置
- 使用 Nginx 提供静态内容
- Nginx 位置块与请求匹配