Nginx的安装和多域名配置的实现方法

Nginx安装

centos6.x yum默认没有nginx的软件包

安装方式:

到nginx下载页面http://nginx.org/en/linux_packages.html#stable,复制CENTOS 6的nginx软件源安装包

运行命令:wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

安装rpm包 yum install nginx-release-centos-6-0.el6.ngx.noarch.rpm -y , 此步实际只是加入了nginx的软件包源

执行 yum install nginx -y 就可以安装好nginx了。

nginx默认安装为Linux的服务 ,所以可以使用service nginx start, stop, restart, try-restart, reload, force-reload, status来操作nginx。

Nginx配置文件

nginx的配置文件默认读取/etc/nginx/nginx.conf文件。

当然也可以修改使用的conf路径,使用命令:

./nginx -c 你的conf文件位置

可以相对路径或者绝对路径。

如果是不熟悉环境的Linux服务器,可以使用命令来快速查找nginx.conf文件 :

sudo find / -name "nginx.conf"

也可以使用命令

sudo nginx -t 

来输出正在使用的配置文件:

nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful

nginx的配置都是由 directives组成,directives由简单指令或者区块指令组成

简单指令:listen 80;

区块指令由{}包含,区块指令又可以包含多个简单指令和区块指令:

http {
 server {
 }
}

多域名配置

我们都知道如果在域名管理的控制面板设置域名对应ip只能设置到ip,不能详细设置到端口。如果一台服务器部署了多个web应用,使用的不同端口启动的,那么就可以Nginx做映射。

比如我有一个域名 www.525.life。

域名还可以分出2级域名: admin.525.life。

我在域名控制面板把这两个域名都指向我的服务器公网ip 123.123.123.123。

这时候发现www.525.life和admin.525.life域名访问都只是对应到了 使用端口80的Web程序(默认的)。

如果我们要访问81端口的应用程序只能使用:

www.525.life:81或者admin.525.life:81。

但是这样很不方便。我们要把端口去掉也能访问就需要使用Nginx做映射。

我们期望www.525.life访问8880端口,admin.525.life访问8881端口。那么可以设置如下:

 server
{
 listen 80;
 server_name www.525.life;
 location / {
  #....
  proxy_pass http://localhost:8880;
 }
 ##### other directive
}
server
{
 listen 80;
 server_name admin.525.life;
 location / {
  #....
  proxy_pass http://localhost:8881;
 }
 ##### other directive
}

这样设置就可以了。把8880和8881都映射到80端口的监听。

使用重载命令使nginx生效:

sudo nginx -s reload

使用命令重启nginx生效:

/etc/init.d/nginx restart

这样就能使用www.525.life访问8880端口,admin.525.life访问8881端口。

每个域名一个conf的写法

我们在上面的例子中使用的是一个文件多个域名的写法,也就是只使用一个conf,在里面不断的增加server。这种方式很直观,但是域名多了不好管理。

Nginx支持引入的用法,也就是我们可以在其他地方先新建好conf文件,conf文件中记录server的信息如下:

admin.conf中的内容是:

server
{
 listen 80;
 server_name admin.525.life;
 location / {
  #....
  proxy_pass http://localhost:8881;
 }
 ##### other directive
}

www.conf中的内容是:

server
{
 listen 80;
 server_name www.525.life;
 location / {
  #....
  proxy_pass http://localhost:8880;
 }
 ##### other directive
}

admin.conf和www.conf都放在/data/nginx/conf/vhost目录下。

然后在nginx.conf中使用引入命令:

include    /data/nginx/conf/vhost/*.conf;

即可。

需要注意的是这句命令应该放在

http{
}

的花括号内。

因为include的命令引入相当于被引入的所有代码写在nginx.conf中一样。

301跳转

我们留意到生活中很多时候不带www也能访问到某个网站,这也能通过Nginx实现。跟上面的配置一样,再增加一个server如下:

server
{
 listen 80;
 server_name 525.life;
 location / {
  #....
   proxy_pass http://localhost:8880;
 }
 ##### other directive
}

或者进行301跳转

server
{
listen 80;
server_name 525.life;
rewrite ^/(.*) http://www.525.life/$1 permanent;
}

添加404网页

添加404网页,都可又直接在里面添加,如:

server
{
listen 80;
server_name www.web126.com; #绑定域名
error_page 404 /404.html;
} 

禁止IP直接访问

最后还有一个方法需要注意,可能有需要禁止IP直接访问80端口或者禁止非本站的域名绑定我们的IP,这样的话应该
如下处理,放到最前一个server上面即可:

server{
listen 80 default;
server_name _;
return 403;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 开启Nginx时端口被占用提示:Address already in use

    如图所示: 查看端口占用情况: sudo netstat -apn | grep 80 查看占用端口的进程: ps -ef | grep 3345 通过结果可知,80端口是Nginx本身占用了,可以杀掉进程,重新启动Nginx sudo kill -9 3345 sudo netstat -apn | grep 80 成功杀掉进程后,启动Nginx 启动Nginx成功,在浏览器输入Nginx所在系统的ip地址,验证Nginx是否启动成功 下面介绍下Nginx的启动.停止与重启 启动 启动代码格式

  • Linux系统下为Nginx安装多版本PHP

    我们在安装配置服务器LNPM环境时应该考虑到PHP多版本并存的问题,下面是实现Linux系统下为Nginx安装多版本PHP的实现方法 linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 & php5.4.44 注意假如php5.5是主版本已经安装在/usr/local/php目录下,那么再安装其他版本的php再指定不同安装目录即可. 安装PHP # wget http://cn2.php.net/get/php-5.4.44.tar.

  • nginx信号集案例详解

    之前工作时候,一台引流测试机器的一个 ngx_lua 服务突然出现了一些 HTTP/500 响应,从错误日志打印的堆栈来看,是不久前新发布的版本里添加的一个 Lua table 不存在,而有代码向其进行索引导致的.这令人百思不得其解,如果是版本回退导致的,那么为什么使用这个 Lua table 的代码没有被回退,偏偏定义这个 table 的代码被回退了呢? 经过排查发现,当时 nginx 刚刚完成热更新操作,旧的 master 进程还存在,因为要准备机器重启,先切掉了引流流量(但有些请求还在),

  • 详解CentOS配置Nginx官方的Yum源

    一直都在使用阿里云购买的centos进行项目部署,最近在本地机器搭建了虚拟机进行某些项目联系时,却发现使用命令yum -y install nginx不能安装nginx,本地centos系统的yum仓库并没有nginx,查找资料得以解决,做记录如下: 由于yum源中没有我们想要的nginx,那么我们就需要创建一个"/etc/yum.repos.d/nginx.repo"的文件,其实就是新增一个yum源. [root@localhost ~]# vim /etc/yum.repos.d/

  • docker nginx 运行后无法访问的问题解决

    ## 1 最近在学docker部署,一开始打算将nginx先docker化的. 对照官方的docker镜像介绍说明,进行自定义配置 将官方的nginx.conf复制出来后,修改添加了一些自定义,主要是屏蔽了default.conf,以及include文件夹 sites-available # include /etc/nginx/conf.d/.conf; include /etc/nginx/sites-available/; 官方原先配置 user nginx; worker_process

  • 一段万能的nginx接口实现反向代理配置

    1.什么是代理服务器 代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机. 2.为什么要使用代理服务器 1)提高访问速度 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度. 2)防火墙作用 由于所有的客户机请求都必须通过代理服务器访问远程

  • Nginx的信号控制

    Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP的代理服务器.Nginx由俄罗斯的Rambler.ru站点开发,而且官方测试Nginx可以支撑五万并发. Nginx官网:http://nginx.org 本文主要讲解Nginx运行后如何控制它,以便它的停止或者重新启动. // 启动和停止nginx 当前目录:/usr/local/bin/nginx 启动: ./sbin/nginx 停止 : kill -INT master 主机进程号 Ng

  • Nginx日志管理介绍

    Nginx日志描述 通过访问日志,你可以得到用户地域来源.跳转来源.使用终端.某个URL访问量等相关信息:通过错误日志,你可以得到系统某个服务或server的性能瓶颈等.因此,将日志好好利用,你可以得到很多有价值的信息. 参数明细表: $remote_addr 客户端的ip地址(代理服务器,显示代理服务ip) $remote_user 用于记录远程客户端的用户名称(一般为"-") $time_local 用于记录访问时间和时区 $request 用于记录请求的url以及请求方法 $st

  • 如何通过nginx负载均衡跳转https

    web端拷贝证书与密钥 scp -rp -P52113 /application/nginx/conf/key 10.0.0.5:/application/nginx/conf/ 在nginx负载均衡服务端配置 vim /application/nginx/conf/nginx.conf worker_processes 2; error_log logs/error.log; events { worker_connections 65535; } http { include mime.ty

  • Centos7安装PHP及Nginx的教程详解

    随着服务端centos的应用越来越普及,centos7的使用也越来越多,这两年来我从一个很少接触centos服务器端维护的小白,也越来越多的基础其维护操作,给我带来了不少困扰的同时也增加了不少centos服务器搭建和运维的知识,今天就来一步一步记录一下. 一.安装PHP 随着微信13年开始大火,php的运用也再次火了起来,市面上很多企业都选择使用php作为其应用后台,个人认为原因有 1.php的成本低 2.php的入门快 3.php的开发周期相对较短 4.tp5的诞生提高了php接口开发的效率.

  • 解决vue项目nginx部署到非根目录下刷新空白的问题

    1.修改config/index.js 2.修改路由route/index 3.后台配置nginx 以上这篇解决vue项目nginx部署到非根目录下刷新空白的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

随机推荐