欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx的安装与使用

程序员文章站 2022-07-12 18:14:05
...

简介

Nginx是一个开源的、高性能的HTTP和反向代理服务器,也可以作为Web服务器使用,其特点是占有内存小,并发能力强,可以在所有的操作系统上使用。同时Nginx也可以作为负载均衡器使用。

Nginx安装包

Nginx的安装包可以在Nginx的官网 www.nginx.org 下载,本文下载安装包为nginx-1.12.1.tar.gz。
本次安装所使用的系统环境是RedHat企业6.5版本,主机信息如下:

Nginx的安装与使用

Nginx服务的安装

  • 在Nginx服务器Server1上解压这个安装包,会出现一个nginx目录;
[root@server1 nginx]# tar zxf nginx-1.12.1.tar.gz 
[root@server1 nginx]# ls
nginx-1.12.1  nginx-1.12.1.tar.gz
[root@server1 nginx-1.12.1]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
  • 输入命令对安装包进行编译,会报错,提示安装软件,本此编译需要安装gcc、pcre-devel、openssl-devel软件:
[aaa@qq.com nginx-1.12.1]# ./configure --prefix=/usr/local/nginx --with-threads --with-file-aio --with-http_ssl_module --with-http_stub_status_module
  • 软件安装完成,运行上条命令没有报错后,输入make命令:
[root@server1 nginx-1.12.1]# make
  • 完成后,输入make install命令安装软件,安装完成后,会在编译时设置好的目录下生成一个nginx目录;
[root@server1 nginx-1.12.1]# make install
[root@server1 nginx-1.12.1]# cd /usr/local/
[root@server1 local]# ls
bin  etc  games  include  lib  lib64  libexec  nginx  sbin  share  src
[root@server1 local]# cd nginx/
[root@server1 nginx]# ls
client_body_temp  fastcgi_temp  logs        sbin       uwsgi_temp
conf              html          proxy_temp  scgi_temp
  • 输入命令使得生成nginx命令,即只在命令行输入nginx即可;
[root@server1 nginx]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

Nginx服务器中的一些基本命令:

nginx               # 开启nginx服务
nginx -t            # 检查nginx配置文件格式是否正确
nginx -s reload     # 重新加载nginx服务
nginx -s stop       # 关闭nginx服务

Nginx服务的基本配置

  • 建立一个Nginx用户,shell为/sbin/nologin;
[root@server1 nginx]# useradd -M -d /usr/local/nginx/ -u 9999 -s /sbin/nologin nginx
  • 编辑配置文件/usr/local/nginx/conf/nginx.conf:
[root@server1 nginx]# vim /usr/local/nginx/conf/nginx.conf

user  nginx;        #修改第2行
worker_connections  65535;  #修改第13行
  • 编辑文件/etc/security/limits.conf:
[root@server1 nginx]# vim /etc/security/limits.conf

nginx           -       nofile          65535   #在最后一行添加内容
  • 检查格式是否正确后,启动nginx服务;

Nginx的应用

本文中的所有应用都是在相近时间配置的,即配置上一个应用之后配置下一个应用,如果配置中有用到之前配置的部分,后面不加赘述,最后会放出配置文件中所有应用的配置。下文应用中的配置文件均指/usr/local/nginx/conf/nginx.conf文件,如果有其他文件,会特殊说明。

https

  • 编辑配置文件:
[root@server1 nginx]# vim /usr/local/nginx/conf/nginx.conf

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      cert.pem;
    ssl_certificate_key  cert.pem;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }
}
  • 在目录/etc/pki/tls/certs下生成cert.pem证书文件,并复制到配置文件目录下:
[root@server1 certs]# pwd
/etc/pki/tls/certs
[root@server1 certs]# make cert.pem

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:shaanxi
Locality Name (eg, city) [Default City]:xi'an
Organization Name (eg, company) [Default Company Ltd]:linux
Organizational Unit Name (eg, section) []:we
Common Name (eg, your name or your server's hostname) []:server1
Email Address []:lijian123_0@163.com

[root@server1 certs]# cp cert.pem /usr/local/nginx/conf/
  • 检查配置文件格式后,重新加载Nginx服务;
[aaa@qq.com certs]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[aaa@qq.com certs]# nginx -s reload

Nginx的安装与使用

根据测试结果,可以看到https设置成功了。

Nginx的虚拟主机

Nginx本身也可以作为一个Web代理服务器,所以也可以设置虚拟主机,并且配置比较简单。配置方法如下:

  • 在Nginx服务器Server1上建立两个目录”www.we.com”和”163.we.com”作为虚拟主机目录,并且在里面写入测试页面。
[root@server1 ~]# mkdir /www.we.com
[root@server1 ~]# echo "www.we.com ~ check page" > /www.we.com/index.html

[root@server1 ~]# mkdir /163.we.com
[root@server1 ~]# echo "163.we.com ~ check page" > /163.we.com/index.html
  • 编辑配置文件,在其中编辑虚拟主机配置。
[aaa@qq.com ~]# vim /usr/local/nginx/conf/nginx.conf

    server {
        listen          80;
        server_name     www.we.com;
        location / {
                root    /www.we.com;
                index   index.html;
}
}
    server {
        listen          80;
        server_name     163.we.com;
        location / {
                root    /163.we.com;
                index   index.html;
}
  • 检查没有错误,重新加载Nginx。
  • 测试时,必须现在浏览器主机中加入本地解析。在浏览器中输入虚拟主机域名”www.we.com”和”163.we.com”。查看结果图,可以看出配置成功。
[aaa@qq.com ~]# vim /etc/hosts

172.25.31.1     server1 www.we.com 163.we.com

Nginx的安装与使用

Nginx的安装与使用

Nginx的负载均衡

之前说过,Nginx可以作为反向代理服务器,Nginx可以反向代理多台服务器,也可以使得不同主机之间实现负载均衡。
这里Nginx反向代理Server2和Server3上的HTTP服务,并实现负载均衡。设置如下:

  • HTTP配置
    在Server2和Server3上安装httpd软件,并且在其中写入测试页以做区分,开启服务。
[root@server2 ~]# yum install -y httpd
[root@server2 ~]# echo "hello,everyone ~ server2" > /var/www/html/index.html
[root@server2 ~]# /etc/init.d/httpd start

[root@server3 ~]# yum install -y httpd
[root@server3 ~]# echo "hello,everyone ~ server3" > /var/www/html/index.html
[root@server3 ~]# /etc/init.d/httpd start
  • 编辑配置文件,实现负载均衡功能。
[aaa@qq.com ~]# vim /usr/local/nginx/conf/nginx.conf

    upstream we {
        server 172.25.31.2:80;
        server 172.25.31.3:80;
}
# 注意写在http {...}之内。

   server {
        listen  80;
        server_name xqy.we.com;
        location / {
                root html;
                proxy_pass http://we;
}
}
  • 配置完成,检测没有错误后重新加载Nginx。
  • 测试前,先在本地解析中加入域名,再在浏览器中输入域名”xqy.we.com”,根据结果图,可以看到负载均衡成功。

Nginx的安装与使用

Nginx的安装与使用

  • 如果没有看到结果,有可能是浏览器缓存的问题,可以使用以下命令查看。
[root@foundation31 ~]# curl xyq.we.com
hello,everyone ~ server2

[root@foundation31 ~]# curl xyq.we.com
hello,everyone ~ server3

Nginx中的重定向

地址重定向

地址重定向是对域名的重定向,因为在客户端有时候不会输入设置好的域名,比如在进入百度时,有些人会输入”www.baidu.com”,有些人会输入”baidu.com”,这时就需要地址重定向定向到正确的域名中。
地址重定向的配置如下所示:

[root@server1 ~]# vim /usr/local/nginx/conf/nginx.conf

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

检测后重新加载Nginx,编辑本地域名解析,在浏览器中输入域名”we.com”就会自动跳转到”www.we.com”上了。

端口重定向

端口重定向一般用于80端口跳转到443端口,即从http跳转到https,这在实际中是非常常用的,因为客户端使用时不会在域名前加入https,所以需要端口重定向来完成这个跳转过程。
端口重定向的设置如下所示:

[aaa@qq.com ~]# vim /usr/local/nginx/conf/nginx.conf

 server {
     listen       443 ssl;
     server_name  login.we.com;

     ssl_certificate      cert.pem;
     ssl_certificate_key  cert.pem;

     ssl_session_cache    shared:SSL:1m;
     ssl_session_timeout  5m;

     ssl_ciphers  HIGH:!aNULL:!MD5;
     ssl_prefer_server_ciphers  on;

     location / {
         root   html;
         index  index.html index.htm;
     }
 }

    server {
        listen 80;
        server_name login.we.com;
        rewrite ^(.*) https://login.we.com$1 permanent;

 }

重新加载Nginx后,输入本地域名解析,在浏览器中输入”login.we.com”,则可以发现自动跳转到了”https://login.we.com“,说明配置成功。

发布地址的重定向

在实际应用中,例如输入地址”www.we.com/images/xyq.jpg”,因为之前设置了”www.we.com”的根目录是/www.we.com目录,所以images目录应该放在这个根目录之下。但是,因为实际情况中目录有自己的存放位置,这个时候就需要发布地址的重定向了,当输入地址后,将自动定向到该目录的真实位置。
例如,此处,xyq.ipg存放在/images目录中,正常情况下,这个图片是无法被访问到的。

[root@server1 ~]# mkdir /images
[root@server1 ~]# cd /images
[root@server1 images]# ls
xyq.jpg

Nginx的安装与使用

设置发布地址重定向之后,用户访问这个图片时,将会自动定向到该图片的真实位置。配置方法如下:

[aaa@qq.com images]# vim /usr/local/nginx/conf/nginx.conf

    server {
        listen          80;
        server_name     www.we.com;
        location / {
                root    /www.we.com;
                index   index.html;
}
        location /images {
                alias /images;
}
}

配置完成,重新加载Nginx,在浏览器中输入”www.we.com/images/xyq.jpg”,根据下图结果图,可以看出,实现了发布目录重定向。
Nginx的安装与使用

Nginx是一款功能比较强大的软件,在实际中使用的非常广泛,以上只是本人对Nginx的一点粗浅认识,如果有错误,欢迎指正!

相关标签: nginx 企业