云服务器免费试用

nginx配置静态页面(nginx动态配置)

服务器知识 0 1383

本文目录:

  • 1、nginx配置通过IP访问返回静态页面
  • 2、一、服务器从零到一——Ubuntu搭建nginx静态服务器
  • 3、如何在nginx上配置显示静态网页
  • 4、Nginx 伪静态简单配置
  • 5、使用Nginx搭建静态网站
  • 6、详解nginx如何代理静态资源(长搜索路径优先)

nginx配置通过IP访问返回静态页面

做不到的,域名解析式是在客户端这边做到,客户机拿到ip才能用tcp去连你的服务器。

你还让人家不能通过ip访问?

服务器断是有个 refer地址,在服务器代码里面是可以识别从哪里跳转过来的,但初次访问应该也是没有的。

当然可以弄个javascript脚本,在客户端判断 地址栏的链接地址,当看到是ip时就然后跳转到其他页面上去。不过是在没这个必要吧

一、服务器从零到一——Ubuntu搭建nginx静态服务器

Ubuntu 18.04上的Nginx默认启用了一个服务器模块,该模块被配置为在/var/www/html目录下提供文档。 虽然这适用于单个站点,但如果您托管多个站点,它可能会变得很笨重。 我们不必修改/var/www/html ,而是在/var/www为我们的 example.com 网站创建一个目录结构,并将/var/www/html保留为默认目录,如果客户端请求没有匹配任何其他网站。

按如下所示为example.com创建目录,使用-p标志创建任何必需的父目录:

$ sudo mkdir -p /var/www/ example.com/html

接下来,使用$USER环境变量分配目录的所有权:

USER:$USER /var/www/ example.com/html/

如果你没有修改你的umask值,你的web根目录的权限应该是正确的,但是你可以通过输入:

$ sudo chmod -R 755 /var/www/ example.com/

接下来,使用gedit或您最喜欢的编辑器创建一个index.html页面示例:

$ gedit /var/www/ example.com/html/index.html

在里面,添加下面的示例HTML:

html

head

titleWelcome to Example.com!/title

/head

body

h1Success! The example.com server block is working!/h1

/body

/html

为了让Nginx提供这些内容,有必要创建一个具有正确指令的服务器块。 我们不要直接修改默认配置文件,而是在/etc/nginx/sites-available/ example.com上创建一个新文件:

$ sudo gedit /etc/nginx/sites-available/example.com

粘贴到以下配置块中,该块类似于默认值,但已更新为我们的新目录和域名:

server {

listen 80;

listen [::]:80;

}

请注意,我们已将root配置更新到我们的新目录,并将server_name为我们的域名。

接下来,让我们通过创建一个链接到启动sites-enabled目录来启用该文件,该目录是Nginx在启动过程中读取的:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

现在启用两个服务器模块并将其配置为基于listen和server_name指令响应请求(您可以阅读关于Nginx如何处理这些指令的更多信息):

example.com :将响应 example.com 和 请求。

default :将响应端口80上与其他两个块不匹配的任何请求。

为了避免添加额外的服务器名称可能导致的哈希桶内存问题,有必要调整/etc/nginx/nginx.conf文件中的单个值。

打开文件:sudo gedit /etc/nginx/nginx.conf

找到server_names_hash_bucket_size指令并删除#符号以取消注释该行:

...

http {

...

server_names_hash_bucket_size 64;

...

}

...

接下来,测试以确保您的Nginx文件中没有语法错误:

$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

如果没有任何问题,请重新启动Nginx以启用您的更改:

$ sudo systemctl restart nginx

熟悉重要的Nginx文件和目录

nginx服务器配置文件:

/etc/nginx :Nginx配置目录。 所有的Nginx配置文件都驻留在这里。

/etc/nginx/nginx.conf :主要的Nginx配置文件。 这可以修改,以更改Nginx全局配置。

/etc/nginx/sites-available/ :可存储每个站点服务器块的目录。 除非将Nginx链接到sites-enabled了sites-enabled目录,否则Nginx不会使用此目录中的配置文件。 通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录启用。

/etc/nginx/sites-enabled/ :存储启用的每个站点服务器块的目录。 通常,这些是通过链接到sites-available目录中的配置文件创建的。

/etc/nginx/snippets :这个目录包含可以包含在Nginx配置其他地方的配置片段。 可重复配置的片段可以重构为片段。

nginx服务器日志文件:

/var/log/nginx/access.log :除非Nginx配置为其他方式,否则每个对您的Web服务器的请求都会记录在此日志文件中。

/var/log/nginx/error.log :任何Nginx错误都会记录在这个日志中。

如何在nginx上配置显示静态网页

如果你以虚拟主机的方式在nginx上跑网站,就把默认的虚拟主机的主机名写成ip地址 ,它的网站目录下放错误信息提示页面的html文件 。默认虚拟主机配置类似:

server {

listen 80;

server_name 192.168.1.12 default;

root D:\ServCode\www;

index index.html;

}

Nginx 伪静态简单配置

通常,我们在美化或者希望能更好的兼容搜索引擎的时候我们常常使用nginx的rewrite模块来实现,例如:我们希望原本的访问链接xxxx.com/xx/xx/xx.php?id=12,变成这种:xxx.com/xx/xx/12.html;又或者是原本的访问链接太长,我们希望能够简洁一点等等吧,下面我将针对这两种情况来做配置。

(1) 页面伪静态

将xxxx.com/xx/xx/xx.php?id=12这种访问链接变成xxx.com/xx/xx/12.html这种

下面笔者在本地的网站目录下创建一个test.php文件

原本的访问链接: ,我们访问看下:

需要注意的是:rewrite 完后不能写break,否则php文件无法解析。

我们使用链接: 来访问下,

解析php的那段避免累赘,这里就不再写上了。

我们访问看下:

(2) 简化访问路径

使用过tp的或者其他一些类型的php框架小伙伴们我们在访问方法时需要这样访问: ,这个表示访问index模块的index控制器中的info方法,但是这么访问不太方便,我们希望去掉index.php,直接使用 访问,那我们就需要配置下nginx,做一个rewrite.

这段配置的意思是:当访问的文件或者目录不存在时,重定向到某个php文件.

!-e 意思是:-e和!-e用来判断是否存在文件或目录。

last: 相当于apache里面的[L]标记,表示rewrite.

s:表示参数.

加上配置后我们再来访问下:

发现可以正常访问了。需要注意的是:如果不写s=xxx,配置会不生效。

好了,本篇文章就到这里了,有需要补充的小伙伴欢迎在下面给我留言哦,看到会及时回复的。

使用Nginx搭建静态网站

开始建站了,暂时还没想要做些什么东西。

Anyway,先搞个云服务器吧,那要怎么搭建呢?先来个最简单的。

Nginx 配置文件目录一般在 /etc/nginx/ 下,打开 nginx.conf 文件可以看到配置:

当外网用户访问服务器 Web 服务由 Nginx 提供,Nginx 需要配置静态资源的路径信息才能通过 URL 正确访问到服务器上的静态资源。

当我们在服务器上安装并启动 Nginx 之后,就可以通过 ;域名或IP 访问我们的网页了。所以,在浏览器中输入 即可。

我们观察到浏览器的地址变成了 ,这页面是安装 Nginx 的默认站点,可以在 /usr/share/nginx/html 目录下找到。在 nginx.conf 配置文件中,有一项 root /usr/share/nginx/html 的配置,意思是当外网访问服务器 跟目录 时,Nginx 会将资源指向 /usr/share/nginx/html 的站点。

但如果输入地址,无法打开(如下截图)。

以阿里云为例,需要在云服务器添加 “安全组规则” ,添加并保存,重新刷新页面就能打开了。

我习惯将前端静态资源放置到服务器的 /data/www 下,因此将配置修改为 root /data/www 。此时访问 会指向 /data/www/index.html (在不配置 location 的 index 情况下,Nginx 默认配置是 index.html )。

由于我使用的是 Mac 机器,因此可以直接在系统终端使用 scp 命令将本地文件上传到云服务器。

scp (secure copy)用于在 Linux 下进行远程拷贝文件的命令。类似于 cp ,只不过 cp 只能在本机进行拷贝,不能跨服务器。 -r 表示递归复制整个目录。

需要注意一下,下面两种的区别:

其中 1️⃣ 得到的是 /data/www/dist ,而 2️⃣ 得到的是 /data/www 。前者表示将 dist 整个目录拷贝至 /data/www 下。后者是把 dist 目录下的所有子文件和子目录都拷贝至 /data/www 。

换句话说就是,前者配置 root 的路径应该是 /data/www/dist ,后者则为 /data/www 。

效果如下:

在浏览器中访问 即可看到我们配置的网页了。

最简单的 Nginx 部署静态网页就完了,其他的下次再讲...

The end.

详解nginx如何代理静态资源(长搜索路径优先)

web服务器重要的的任务之一就是服务静态资源文件,比如网站的图片,还有一些静态的HTML页面,本文的例子还是来自于Nginx官网。在这个用例中我们要配置两个静态资源路径,来处理外部的静态资源请求。我们会更改配置文件中,server块下http下的location。

首先需要创建/data/www目录,然后将index.html文件,文件的内容并不重要,本例只是指引我们观察nginx如何找到和发送静态资源。然后在创建一个/data/images目录,并放置一些图片文件。

下一步打开配置文件,默认的配置文件中已经包含了一些server块,大多数已经注释掉了,官网让我们把server块都注释掉,重写写一个新的空的server块,但注意,一定不要将http注释掉,nginx通过识别它才能知道我们需要处理的是http请求。

通常,配置文件可能会包含多个server块,这些server块可以由端口号区分,也可以由server names来区分。当nginx决定由哪一个server去处理请求的时候,nginx会根据server块中location参数去测试请求头中指定的URI

现在在server块中添加location块

该location块指定了URI请求的根目录前缀,"/"。对于请求来讲,URI被添加在root路径具体指向的目标路径,如果存在的多个匹配的位置块,nginx将选择前缀最长的位置块(可能是因为更加具体)。上方的location块提供的已经是最短前缀了,也就是说,server块中所有的location块如果都没有匹配到,则该location块将会被采用。

官网的说法真的非常绕,我觉得思路就是, nginx首先会优先去具体的location块匹配资源(规则是参数越长,越优先查找),如果都查不到就去根路径查。

我们再加一个location块

这个location块会匹配以/images/开始的请求,但上一个(location块 location / 也会匹配该内容,记得吗,Nginx会先匹配长路径location块)

现在为了看的更加清楚,在加过这两部分内容之后的配置文件应该长这样

重新加载nginx之后,配置会更新,使用:

现在该配置文件已经生效了,配置在监听80端口的本地服务器上,我们可以在本地访问 ,在此之后例如 这样的请求, Nginx会映射到location /images/去,如果请求的资源不存在,Nginx将返回404页面,404页面是可以定制的,一般企业也会定制属于自己的404页面。

后续的内容我还打算针对一些常见场景,记录以下nginx的配置文件针对不同场景和需求该如何去写,以及为什么这么写。Nginx一些模块的详细介绍不打算专门写,大家如果有需求可以看官方文档。

【nginx配置静态页面】的内容来源于互联网,如引用不当,请联系我们修改。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942@qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: nginx配置静态页面(nginx动态配置)
本文地址: https://solustack.com/27570.html

相关推荐:

网友留言:

我要评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。