程序员计算机专业学习笔记

Centos 7 下Nginx安装及端口转发配置

2018-06-19  本文已影响945人  LY丶Smile

安装

# 下载到当前目录
wget https://nginx.org/download/nginx-1.12.2.tar.gz
# 解压到指定目录
tar xzvf nginx-1.12.2.tar.gz -C /opt/tools/


# GCC编译器:编译c语言程序
yum install -y gcc
yum install -y gcc-c++

# PCRE库:支持rewrite模块
yum install –y pcre pcre-devel

# ZLIB库:支持gzip模块
yum install -y zlib zlib-devel

# Openssl库:支持ssl模块
yum install –y openssl openssl-devel

安装方式有两种,默认配置安装以及指定配置安装,不熟悉Linux操作的话建议直接默认安装,熟悉Linux操作的话建议使用第二种方式安装,可控性高

# 默认配置安装
./configure
# 编译
 make
 # 安装
 make install
安装过程截图
## 指定安装目录等配置

./configure \
--prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--pid-path=/usr/local/nginx/conf/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/data/log/nginx/error.log \
--http-log-path=/data/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_ssl_module \
--http-client-body-temp-path=/data/temp/nginx/client \
--http-proxy-temp-path=/data/temp/nginx/proxy \
--http-fastcgi-temp-path=/data/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/data/temp/nginx/uwsgi \
--http-scgi-temp-path=/data/temp/nginx/scgi
安装过程截图

启动、停止

cd /usr/local/nginx/sbin/
# 开启
./nginx 
# 快速停止
./nginx -s stop 
# 如果还在服务中则不会停止,直到服务结束
./nginx -s quit
# 重新加载配置文件
./nginx -s reload

本地端口转发

修改nginx.conf,每一个转发都是一个server配置

# 将域名this.is.a.demo.1.com.cn的所有流量转发到8080端口
# 其实真实访问地址就是将“this.is.a.demo.1.com.cn” 替换成 “http://127.0.0.1:8080”
server {
    listen       80;
    server_name  this.is.a.demo.1.com.cn;
    access_log   /data/logs/nginx/demo1.log;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect default;
    }
}

# 将域名this.is.a.demo.2.com.cn/demo的所有流量转发到8081端口
# 注意 “http://127.0.0.1:8081/demo/”最后的‘/’
server {
    listen       80;
    server_name  this.is.a.demo.2.com.cn;
    access_log   /data/logs/nginx/demo2.log;

    location /demo {
        proxy_pass http://127.0.0.1:8081/demo/;
    }
}

# HTTPS 支持
server {
      listen 443;
      server_name this.is.a.https.demo.com.cn;
      ssl on;
      ssl_certificate cert/https-demo.pem;
      ssl_certificate_key cert/https-demo.key;
      ssl_session_timeout 5m;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_prefer_server_ciphers on;
      location / {
            proxy_pass http://127.0.0.1:8081/https-demo/;
      }
}

踩坑经历

ssl模块缺失

报错信息

nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/vhost/ssl.conf

原因
Nginx编译安装的时候没有安装http_ssl_module,所以不支持Https
解决方法
进入之前编译过的Nginx目录,重新编译将ssl模块加进去

./configure --with-http_ssl_module
# 此处make就可以了,千万不要make install,否则会覆盖掉之前安装的
make
# 用新编译的nginx替换原来的,最好是先将服务停掉
cp objs/nginx /usr/local/nginx/sbin/nginx
# 重新启动Nginx服务即可
上一篇下一篇

猜你喜欢

热点阅读