Nginx 基础配置

发布于 2024-05-16 11:33:39 字数 5272 浏览 25 评论 0

配置在 /etc/nginx

nginx -V 显示版本详细信息

基本配置篇

[root@master sbin]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

默认情况下,nginx 会在 80 端口分享 /usr/share/nginx/html 目录的内容。

[root@master ~]# ps aux|grep nginx
root      35916  0.0  0.0 116604  2228 ?        Ss   23:37   0:00 nginx: master process nginx
nginx     35917  0.0  0.0 119156  3504 ?        S    23:37   0:00 nginx: worker process

只有 root 用户才能绑定低于 1024 的端口。
主进程读取和执行 nginx 配置,绑定端口,运行工作进程。

nginx 由事件驱动。每个工作进程都是单线程,并运行一个非阻塞事件循环,可以快速地处理请求。

worker_connections 指令设置可以由每个工作进程打开的最大同时连接数。默认为每个工作进程 512 个连接。
server_name 指令用于确定哪个服务器用于处理传入的请求。当您想在同一接口和端口上托管多个域名时,该指令对于虚拟主机非常有用。

情景一:只更新 nginx 配置,不更新 nginx 主进程

kill -HUP `cat /var/run/nginx.pid`

重新加载 nginx 会启动新的工作进程,并杀死旧的工作进程。它能够完全优雅地完成此操作,而不会丢弃或杀死任何 Web 请求。
它通过启动新工作进程,停止向老工作进程发送流量来实现,并等待老工作进程完成所有正在处理的请求,然后杀死他们。

  • TERM、INT 快速关机
  • QUIT 优雅关机
  • KILL 停止一个顽固的进程
  • HUP 配置重载

情景二:部署 nginx 新版本,更新 nginx 主进程

cat /var/run/nginx.pid 
24484 # master PID
kill -USR2 24484 # sending USR2 to the old master process, start up a new master process and workers
kill -WINCH 24484 # kill the children of the old nginx master.
kill -QUIT 24484 # kill the old master

情景三:多主页文件的应用(计划维护)

server {
	listen *:80;
	root /usr/share/nginx/html;
	index maintenance.html index.html;
}

重载配置,维护完成后,删掉 maintenance.html

情景四:URL 附加

location / {
  root /var/www/html;
}

http://example.org/file.html will be resolved to /var/www/html/file.html.

location /foobar/ {
  root /data;
}

http://example.org/foobar/test.html will resolve to /data/foobar/test.html.

情景五:URL 替换

在上面示例中,当我们使用 root 指令时,请求 URI 路径被附加到 root 指令。

有时,我们想替换而不是将 URI 附加到根路径。可以改用 alias 指令。它与 root 类似,除了替换指定的位置。

location /gifs/ {
  alias /data/images/;
}

http://example.org/gifs/business_cat.gif will be resolves to /data/images/business_cat.gif.

情景六:URL 精确匹配

location = /foobar/ {
  ...
}

情景七:URL 正则匹配

location ~ \.(gif|jpg)$ {
  ...
}

表示大小写区分。*表示大小写不区分。

情景八:跳过正则匹配

location ^~ /foobar/images {
  root /var/www/foobar;
}
location ~* \.(gif|jpg)$ {
  root /var/www/images;
}

当选择^~修饰符作为 URI 的最佳前缀时,它立即选择并跳过与正则表达式块的匹配。

ModifierNameDescription
(none)PrefixMatches on the prefix of a URI
=Exact MatchMatches an exact URI
~Case-Sensitive Regular ExressionMatches a URI against a case-sensitive regular expression
~*Case-Insensitive Regular ExpressionMatches a URI against a case-insensitive regular expression
^~Non-Regular Expression PrefixMatches a URI against a prefix and skips regular expression matching
  1. 检查精确匹配位置块。如果找到完全匹配的内容,搜索终止,并使用位置块。
  2. 检查所有前缀位置块的最具体(最长)匹配的前缀。
    2.1 如果最佳匹配具有^~修饰符,则搜索终止,使用该块。
  3. 按顺序检查每个正则表达式块。如果是正则表达式发生匹配,搜索终止并使用块。
  4. 如果没有匹配正则表达式块,则在步骤 2 中确定的最佳前缀位置块被使用。

命名的位置块

location / {
  try_files maintenance.html index.html @foobar;
}
location @foobar {
  ...
}

虚拟主机

server {
	listen 80;
	server_name example.com;
}
server {
	listen 80 default_server;
	server_name foobar.com;
}

default_server 用于指定默认 server

Configuring SSL

server {
	listen 80;
	listen 443 ssl;
	server_name   www.foobar.com  ;
	ssl_certificate   www.foobar.com.crt  ;
	ssl_certificate_key   www.foobar.com.key  ;
}

如果仅指定文件名或相对路径(certificate.crt),将使用配置目录/etc/nginx 作为路径的前缀。

共享通配符证书

http {
	ssl_certificate star.example.com.crt;
	ssl_certificate_key star.example.com.crt;
	server {
		listen 80;
		listen 443 ssl;
		server_name   www.example.com  ;
	}
	server {
		listen 80;
		listen 443 ssl;
		server_name billing.example.com;
	}
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

温暖的光

暂无简介

0 文章
0 评论
24 人气
更多

推荐作者

小瓶盖

文章 0 评论 0

wxsp_Ukbq8xGR

文章 0 评论 0

1638627670

文章 0 评论 0

仅一夜美梦

文章 0 评论 0

夜访吸血鬼

文章 0 评论 0

近卫軍团

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文