1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Nginx 指定域名(或子域名)和网站绑定

Nginx 指定域名(或子域名)和网站绑定

时间:2019-08-30 15:29:40

相关推荐

Nginx 指定域名(或子域名)和网站绑定

问题起因

博主最近在 CentOS 上面部署另外一个网站,但并不想通过端口号来访问,因为端口号对于 SEO 优化不利,且用户访问较繁琐(使用域名不就是为了方便用户访问吗?再引入端口号岂不是和使用域名的目的相悖吗?),因此想在 CentOS 的 80 端口上同时运行两个网站,nginx 通过请求的域名来返回相应的根目录下的网站,达到 80 端口复用,同时运行多个网站的目的。

实现步骤

为方便您检查路径,本文在需要对路径进行要求时,专门使用pwd命令打印出博主当前步骤所在路径,便于您检查。

检查 nginx 配置文件路径(重要)

注意:这一步非常关键,如果修改了错误的 nginx 配置文件,将导致所有修改均无效,甚至会让您在探索了数个小时后仍无法得知修改无效的原因是什么。

使用命令

$ nginx -V

来查看 nginx 的一些配置信息,如下(您的和博主的显示内容可能不同,不影响):

nginx version: nginx/1.12.2built by gcc 4.8.5 0623 (Red Hat 4.8.5-16) (GCC)built with OpenSSL 1.0.2k-fips 26 Jan TLS SNI support enabledconfigure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-file-aio --with-ipv6 --with-http_auth_request_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-google_perftools_module --with-debug --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' --with-ld-opt='-Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-E'

其中只需要关注到--conf-path=/etc/nginx/nginx.conf这个条目,这个条目指明了当前 nginx 的程序使用的默认配置文件。

新建一个站点配置文件

根据上面的配置文件路径,首先切换目录到 nginx 的配置路径下:

$ cd /etc/nginx

然后新建一个站点配置文件,建议放置在 nginx 配置目录下的vhost目录内,如果您当前没有此目录,可新建一个:

$ pwd/etc/nginx$ sudo mkdir vhost$ lsconf.dfastcgi_paramsmime.typesscgi_params vhostdefault.d fastcgi_params.default mime.types.default scgi_params.default win-utffastcgi.confkoi-utf nginx.confuwsgi_paramsfastcgi.conf.default koi-win nginx.conf.default uwsgi_params.default

注意:/etc是系统目录,一般用户不具有修改权限,需要使用sudo以管理员权限在该目录中进行修改,如创建、修改文件,创建文件夹等操作。

进入刚刚创建的vhost目录,新建一个配置文件,例如mysite.conf,该配置文件文件名无限制,最好是你的网站名称之类的,便于辨认,但一定是以.conf为后缀

$ pwd/etc/nginx$ cd vhost/$ pwd/etc/nginx/vhost$ sudo touch mysite.conf$ lsmysite.conf trans.conf

其中,touch命令创建了一个名为mysite.conf的配置文件(空文件),是本文中要介绍的配置文件,另一个是博主正在运行的网站,无需在意。

修改网站配置文件信息

本文中将建立一个名为mysite的网站,网站根目录为/home/www/mysite,网站绑定域名

使用任意文字编辑器打开mysite.conf,输入如下内容并保存(注意需管理员权限):

server {listen 80;# 网站的端口一般为 80,可以与其他网站一起使用该端口server_name ;# 要绑定的域名(或子域名)root /home/www/mysite;# 该网站的根目录location / {# 不用管}}

以上内容为一个server的内容,下面讲nginx.conf配置的时候会再区分把一行配置写在server或写在server外的区别。

$ pwd/etc/nginx/vhost$ lsmysite.conf trans.conf$ sudo vim mysite.conf$ cat mysite.confserver {listen 80;server_name ;root /home/www/mysite;location /{}}

上面我们已经新建好了一个网站,该网站使用服务器的 80 端口,绑定的域名为,网站根目录使用/home/www/mysite

修改 nginx 配置文件

下面对关键文件nginx.conf进行配置,建议在修改前先备份,养成好的习惯:

$ pwd/etc/nginx$ sudo cp nginx.conf nginx.conf.bak

将原有配置存储到nginx.conf.bak后,继续下面操作,若后面发现修改出错,可将nginx.conf.bak改名回nginx.conf使用。

以超级用户权限使用文本编辑器打开nginx.conf

$ sudo vim nginx.conf

并进行编辑。

Nginx 配置文件的结构

我们这里只介绍和配置域名绑定相关的部分结构,即http小节:

http {(各种配置)}

设置在此处的配置都是http的全局配置,如果要对某个网站单独配置,则需要对每个server分别设置:

http {(此处的配置是全局的配置参数)server {(此处的配置是本 server 的配置参数)}server {(此处的配置是本 server 的配置参数)}(此处的配置是全局的配置参数)}

但是我们并不提倡把所有server都展开写在nginx.conf中,因此我们使用一句include语句,把vhost下所有网站的配置都引用进来。注意:include命令只是简单地进行文本替换。

于是我们在nginx.confhttp节内部的末尾写上一句:

http {(前面的若干配置)include /etc/nginx/vhost/*.conf;}

这样一来,vhost下的所有.conf文件均被文本替换式地引入到nginx.conf里面了。

重启 nginx 服务

使用命令:

$ sudo service nginx restartRedirecting to /bin/systemctl restart nginx.service

重启 nginx 服务。

出现问题:重启服务报错

此时可使用命令:

$ sudo service nginx status -l

来查看报错信息和错误日志。输入此命令后,日志不会马上显示出来,稍等几秒会显示出来,-l选项使得每条日志能够完整显示在屏幕上,否则当一条日志过长时,中间的文本将被...替代。

若出现问题,十有八九日志都会说是载入nginx.conf出错,这多半是因为您在nginx.confmysite.conf中有错误的配置。

访问新网站

为新的二级域名添加 DNS 解析后,在浏览器中访问,正常情况下会报404 Not found的错误,这是因为本文到目前为止还没有去创建这个新网站的根目录,出现404错误反而说明前面的配置是正确的,所以下一步我们将创建一个简单的网页运行起来。

建立新网站的根目录(或使用已有目录)

博主习惯将网站的文件放在/home/www下,并给该目录0777权限,以免出现403错误,虽然这样不太安全。鉴于博主水平有限,希望有安全需求的读者关注其他安全大牛的文章,博主深表歉意。

/home/www下建立目录mysite/home/www目录已经被博主创建好,并使用chmod命令赋予其0777权限):

$ cd /home/www/$ mkdir mysite$ lsmysite trans

切换到mysite目录下,简单创建一个网页:

$ pwd/home/www$ cd mysite/$ echo hello! > index.html$ lsindex.html$ cat index.htmlhello!

此时在浏览器中重新访问,即可看到一行hello!了,表示新网站创建成功。

结语

以上便是一个新网站的域名绑定的创建过程,若有您不明白或博主的错误之处,欢迎在评论区指正,感激不尽!

.12.18

个人主页

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。