Linux下nginx的安装和配置

第一部分 nginx安装

1.1软件环境

操作系统:centOS 7

1.2 nginx下载

下载页面地址:http://nginx.org/en/download.html
稳定版本nignx 1.8.0为例
http://nginx.org/download/nginx-1.8.0.tar.gz

1.3 linux下安装nginx

tar zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure 
make
make install

提示:执行./configure时,可能会提示很多插件找不到,使用命令

yum install gcc-c++
yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel

如果需要ssl功能需要openssl库

 #yum -y install openssl openssl—devel

要是这样编译的时候还是找不到openssl库,就需要下载openssl源文件,解压后,将路径指定到解压的路径。

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-openssl=/usr/local/src/openssl-xxxx --with-pcre --with-http_stub_status_module 

1.4 nginx启动

/usr/local/nginx/sbin/nginx –c /usr/local/nginx/conf/nginx.conf

参数“-c”指定配置文件的路径,不加“-c”参数,Nginx会默认加载其安装目录conf子目录中的nginx.conf文件

1.5 nginx停止

查询nginx主进程号:

ps –ef|grep nginx

从容停机:

kill –quit nginx主进程号

快速关机:

kill –term nginx主进程号
killint nginx主进程号

强制关机:

pkill -9 nginx

提示:如果在nginx.conf配置文件中指定pid文件存放路径,该文件中存放nginx当前主进程号。nginx.pid文件默认存放nginx安装目录的logs目录下。所以以上命令可以如下使用:

kill –信号类型 ‘usr/local/nginx/logs/nginx.pid’

1.6 nginx平滑重启

kill –HUP nginx主进程号

1.7 配置检验

nginx –t –c /usr/local/nginx/conf/nginx.conf

1.8 tomcat安装

下载tomcat二级制版本

tar zxvf apache-tomcat-xxxx.tar.gz
mv apache-tomcat-xxxx /usr/local/tomcat
mkdir /data0
mkdir /data0/htdocs
mkdir /data0/htdocs/www
cp -rf /usr/local/tomcat/webapps/* /data0/htdocs/www
vi /usr/local/tomcat/conf/server.xml

修改端口号,如果多个tomcat服务器在同一台机器,使用的端口号不能重复
在最后前一行加一下内容:

1.9 nginx对tomcat做负载均衡配置

user www www;
worker_processes 8;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 102400;
events   
{   
use epoll;   
worker_connections 102400;   
}   
http   
{   
  include       mime.types;   
  default_type  application/octet-stream;   
  fastcgi_intercept_errors on;   
  charset  utf-8;   
  server_names_hash_bucket_size 128;   
  client_header_buffer_size 4k;   
  large_client_header_buffers 4 32k;   
  client_max_body_size 300m;   
  sendfile on;   
  tcp_nopush     on;   

  keepalive_timeout 60;   

  tcp_nodelay on;   
  client_body_buffer_size  512k;   

  proxy_connect_timeout    5;   
  proxy_read_timeout       60;   
  proxy_send_timeout       5;   
  proxy_buffer_size        16k;   
  proxy_buffers            4 64k;   
  proxy_busy_buffers_size 128k;   
  proxy_temp_file_write_size 128k;   

  gzip on;   
  gzip_min_length  1k;   
  gzip_buffers     4 16k;   
  gzip_http_version 1.1;   
  gzip_comp_level 2;   
  gzip_types       text/plain application/x-javascript text/css application/xml application/json;   
  gzip_vary on;   

upstream tomcat_server {   
 server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;   
 server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;   
}   

server {   
    listen 80;   
    server_name  chinaapp.sinaapp.com;   
    index index.jsp index.html index.htm;   
    #发布目录/data/www   
    root  /data/www;   

location /   
{   
default_type 'application/json';
          proxy_next_upstream http_502 http_504 error timeout invalid_header;   
      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_pass http://tomcat_server;   
      expires      3d;   
    }   
  }   
} 

1.10 nginx配置https(ssl)

1.10.1自行颁发不受浏览器信任的证书

可以通过以下步骤生成一个简单的证书:
进入你想创建证书和私钥的目录,例如:

$ cd /usr/local/nginx/conf

创建服务器私钥,命令会让你输入一个口令:

$ openssl genrsa -des3 -out server.key 1024

创建签名请求的证书(CSR):

$ openssl req -new -key server.key -out server.csr

在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:

$ openssl rsa -in server.key -out server.nopass.key

注:server.key和server.nopass.key都是私钥文件,不同的是前者需要输入密码,后者不需要。如果私钥server.key用于nginx,那么在nginx启动的时候会提示输入私钥文件的密码,nginx则无法完成自动重启。使用server.nopass.key就不需要输入密码。

最后标记证书使用上述私钥和CSR:

$ openssl x509 -req -days 365 -in server.csr -signkey server.nopass.key -out server.no.pass.crt

通过自行颁发的私钥文件server.nopass.key和CA证书server.nopass.crt,就可以搭建安全的nginx web服务器。

1.10.2配置nginx

修改Nginx配置文件,让其包含新标记的证书和私钥:

server {
  server_name YOUR_SERVER_NAME;
    listen 443;
    ssl on;
    ssl_certificate /usr/local/nginx/conf/server.nopass.crt;
    ssl_certificate_key /usr/local/nginx/conf/server.nopass.key;
}

重启nginx。
这样就可以通过以下方式访问:
https://YOUR_SERVER_NAME
另外还可以加入如下代码实现80端口重定向到443.

server {
listen 80;
server_name localhost;
rewrite ^(.*) https://$server_name$1 permanent;
}

1.10.3 ssl性能优化

Nginx默认设置的DH算法(译注:Diffie-Hellman key exchange algorithm)是影响SSL性能的最大因素,因此采用如下设置能增加SSL性能:

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

参考资料:
Nginx SSL性能调优
nginx使用ssl模块配置HTTPS支持
nginx实现ssl反向代理实战

Logo

更多推荐