Docker 安装 Nginx 、绑定端口和反向代理

Nginx 是⼀款⾼性能的 http 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器。由俄罗斯 的程序设计师伊⼽尔·⻄索夫(Igor Sysoev)所开发,官⽅测试 nginx 能够⽀⽀撑 5 万并发链接,并且 cpu、内存等资源消耗却⾮常低,运⾏⾮常稳定。

Nginx应⽤场景:

        1、http 服务器。Nginx 是⼀个 http 服务可以独⽴提供 http 服务。可以做⽹⻚静态服务器。

        2、虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。

        3、反向代理,负载均衡。当⽹站的访问量达到⼀定程度后,单台服务器不能满⾜⽤户的请求              时,需要⽤ 多台服务器集群可以使⽤ nginx 做反向代理。并且多台服务器可以平均分担负              载,不会因为某台服务器 负载⾼宕机⽽某台服务器闲置的情况。

一、安装Nginx(使用docker 安装)

1.搜索镜像: docker search nginx

2. 拉取nginx镜像

        docker pull nginx

3. 创建容器,设置端⼝映射、⽬录映射

        # 在/root⽬录下创建nginx⽬录⽤于存储nginx数据信息

         mkdir ~/

        nginx cd ~/

        nginx mkdir conf cd conf

       # 在~/nginx/conf/下创建nginx.conf⽂件,粘贴下⾯内容

       vim nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
             worker_connections 1024;
            }
http {
     include /etc/nginx/mime.types;
     default_type application/octet-stream;
     log_format main '$remote_addr - $remote_user [$time_local] "$request" '
     '$status $body_bytes_sent "$http_referer" '
     '"$http_user_agent" "$http_x_forwarded_for"';
     access_log /var/log/nginx/access.log main;
     sendfile on;
     #tcp_nopush on;
     keepalive_timeout 65;
     #gzip on;
     include /etc/nginx/conf.d/*.conf;
}

~/nginx/conf.d/80.conf

server {
             listen 80; # 监听的端⼝
             server_name localhost; # 域名或ip
             location / { # 访问路径配置
             root /usr/share/nginx/html;# 根⽬录
             index index.html index.htm; # 默认⾸⻚
             }
         error_page 500 502 503 504 /50x.html; # 错误⻚⾯
         location = /50x.html {
         root html;
         }
    }

启动nginx

docker run -id --name=c_nginx \

-p 80:80 \

-p 81:81 \

-p 82:82 \

-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \

-v $PWD/conf.d:/etc/nginx/conf.d \

-v $PWD/logs:/var/log/nginx \

-v $PWD/html:/usr/share/nginx/html \

nginx

参数说明:

-p 80:80:将容器的 80端⼝映射到宿主机的 80 端⼝。

-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前⽬录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置⽬录

-v $PWD/logs:/var/log/nginx:将主机当前⽬录下的 logs ⽬录挂载到容器 的/var/log/nginx。⽇志⽬录

二、Nginx 绑定端口

(1)上传静态⽹站:

将/资料/静态⻚⾯/index⽬录上传⾄ /usr/local/nginx/index下

将/资料/静态⻚⾯/regist⽬录上传⾄ /usr/local/nginx/regist下 (

(2)修改Nginx 的配置⽂件:~/nginx/config.d/port.conf

 server {
         listen 81; # 监听的端⼝
         server_name localhost; # 域名或ip
         location / { # 访问路径配置
         root /usr/share/nginx/index;# 根目录
         index index.html index.htm; # 默认首页
            }
         error_page 500 502 503 504 /50x.html; # 错误页面
         location = /50x.html {
         root html;
    }
  }


server {
             listen 82; # 监听的端⼝
             server_name localhost; # 域名或ip
             location / { # 访问路径配置
             root /usr/share/nginx/regist;# 根目录
             index regist.html; # 默认首页
             }
             error_page 500 502 503 504 /50x.html; # 错误页面
             location = /50x.html {
             root html;
                }
 }

(3)访问测试:

        地址栏输⼊http://192.168.177.129/:81可以看到⾸⻚⾯

        地址栏输⼊http://192.168.177.129/:82 可以看到注册⻚⾯

(4)域名绑定:

        做好域名指向后,修改nginx配置⽂件 domain.conf

 server {
         listen 80;
         server_name www.shk.com;
         location / {
         root /usr/share/nginx/cart;
         index cart.html;
         }
 }
 
 server {
                 listen 80;
                 server_name regist.shk.com;
                 location / {
                 root /usr/share/nginx/search;
                 index search.html;
                 }
 }

三、Nginx反向代理与负载均衡

配置反向代理

~/nginx/config.d/proxy.conf

 upstream tomcat-kkb{
 server 192.168.8.159:8080;
 }
 server {
 listen 80; # 监听的端⼝
 server_name www.xxxx.com; # 域名或ip
 location / { # 访问路径配置
 # root index;# 根⽬录
 proxy_pass http://tomcat-shk;
 index index.html index.htm; # 默认⾸⻚
 }
 }

配置负载均衡

修改 Nginx配置⽂件:lb.conf

upstream tomcat-huike {
             server 192.168.8.159:8080;
             server 192.168.8.159:8081;
             server 192.168.8.159:8082;
 }
     server {
     listen 80; # 监听的端⼝
     server_name www.shk.com; # 域名或ip
     location / { # 访问路径配置
     # root index;# 根⽬录
     proxy_pass http://tomcat-huike;
     index index.html index.htm; # 默认目录
     }
     error_page 500 502 503 504 /50x.html; # 错误页面
     location = /50x.html {
     root html;
     }
 }

地址栏输⼊http:// www.hmtravel.com /

刷新观察每个⽹⻚的标题,看是否不同。

经过测试,三台服务器出现的概率各为33.3333333%,交替显示。

如果其中⼀台服务器性能⽐较好,想让其承担更多的压⼒,可以设置权重。

⽐如想让NO.1出现次数是其它服务器的2倍,则修改配置如下:

upstream tomcat-huike {
             server 192.168.8.159:8080;
             server 192.168.8.159:8081 weight=2;;
             server 192.168.8.159:8082;
 }

你可能感兴趣的:(nginx,服务器,运维)