nginx安装与运行
安装
1.去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
2.安装依赖环境(Centos)
(1)安装gcc环境
yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
yum install -y pcre pcre-devel
(3)zlib压缩和解压缩依赖
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
yum install -y openssl openssl-devel
3.安装依赖环境(ubuntu)
(1)安装gcc环境
sudo apt update
sudo apt install build-essential
#查看版本
gcc --version
g++ --version
(2)安装PCRE库,用于解析正则表达式
sudo apt-get install libpcre3 libpcre3-dev
(3)zlib压缩和解压缩依赖
sudo apt install zlib1g
sudo apt install zlib1g-dev
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
sudo apt-get install openssl
sudo apt-get install libssl-dev
4.解压,需要注意,解压后得到的是源码,源码需要编译后才能安装
tar -zxvf nginx-1.16.1.tar.gz
5.编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错
mkdir /var/temp/nginx -p
6.在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
./configure --prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_ssl_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi \
--add-module=/home/dev/fastdfs/fastdfs-nginx-module-1.22/src/
7.make编译
make
8.make编译
make install
9.配置
worker_processes 4;
#worker可以打开的句柄数
worker_rlimit_nofile 65535;
events {
#每个worker可以达到的连接数
worker_connections 16000;
}
#http模块下添加header中对下划线的支持
underscores_in_headers on;
#非配置的域名无法访问
server {
listen 80 default;
server_name _;
location / {
#防止返回变成下载文件
add_header Content-Type "text/plain";
add_header Cache-Control "no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires "0";
return 200 "";
}
}
#静态页面
server {
listen 80;
server_name www.baidu.com;
client_max_body_size 100M;
client_body_buffer_size 2M;
location / {
root /home/xxx/xx/front-end;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
#转发请求
server {
server_name www.baidu.com
listen 80;
client_max_body_size 100M;
client_body_buffer_size 2M;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#启用支持websocket连接
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
#负载均衡
upstream backend {
server localhost:7997;
server localhost:7998;
server localhost:7999;
}
#SSL
server {
listen 443 ssl;
server_name www.baidu.com;
client_max_body_size 100M;
client_body_buffer_size 2M;
#access_log logs/host.access.log main;
# ssl证书地址
ssl_certificate www.baidu.com.pem; # pem文件的路径
ssl_certificate_key www.baidu.com.key; # 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://backend;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Origin' $http_origin;
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,web-token,app-token,Authorization,Accept,Origin,Keep-Alive,User-Agent,X-Mx-ReqToken,X-Data-Type,X-Auth-Token,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
10.进入sbin目录启动nginx
./nginx 启动
./nginx -s stop 停止
./nginx -s reload 重新加载
./nginx -t 检查配置文件是否正确
11.打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面
注意事项
1.如果在云服务器安装,需要开启默认的nginx端口:80
2.如果在虚拟机安装,需要关闭防火墙
3.本地win或mac需要关闭防火墙
4.nginx请求转发头丢失问题
#下划线无法处理,在nginx的http部分添加如下信息
underscores_in_headers on; (默认 underscores_in_headers 为off)