配置可参考:
https://www.cnblogs.com/zhouxinfei/p/7862285.html
http://blog.csdn.net/hzsunshine/article/details/63687054
安装准备
nginx默认占用80端口,so 安装的时候看你的服务器80端口是否被别的application程序占用了。
为什么nginx默认是80端口呢,因为浏览器访问的时候不加端口号也是80端口,这样输入域名或者ip就可以直接访问到服务器80所指向的服务了。
检查80端口是否被暂用
netstat -ntulp |grep 80
nginx是C语言开发,建议在linux上运行
gcc
安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:
yum install gcc-c++
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。
yum install -y pcre pcre-devel
注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。
yum install -y zlib zlib-devel
openssl
OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。 nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。
yum install -y openssl openssl-devel
未安装以上可能会出现的错误
执行./configure时
错误1:pcre-devel未安装
/configure: error: the HTTP rewrite module requires the PCRE library.
错误2:openssl 未安装
./configure: error: the HTTP cache module requires md5 functions
from OpenSSL library. You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.
2、安装步骤
第一步:把nginx的源码上传到linux系统
第二步:把压缩包解压缩。tar -zxvf nginx-1.8.1.tar.gz
第三步:进行configure。
./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 \
--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
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
第四步:make
第五步:make install
3、Nginx的常用命令
1、启动:进入nginx的sbin目录,./nginx就可以启动。
如果访问不到,首先查看防火墙是否关闭。
cat /etc/sysconfig/iptables
2、关闭nginx:
可以使用kill命令,但是不推荐使用。
推荐使用:
#强制退出,如果有未处理的数据,丢弃
./nginx -s stop
#非强制,等处理完再退出
./nginx -s quit
3、刷新配置:
./nginx -s reload
4、 重新打开日志文件
./nginx -s reopen
5、测试nginx配置文件是否正确
./nginx -t -c /path/to/nginx.conf
4、Nginx的配置文件
main:用于进行nginx全局信息的配置
events:用于nginx工作模式的配置
http:用于进行http协议信息的一些配置
--server:用于进行服务器访问信息的配置
--location:用于进行访问路由的配置
--upstream:用于进行负载均衡的配置
# 全局配置
main
# nginx工作模式配置
events {
}
# http设置
http {
....
# 服务器主机配置
server {
....
# 路由配置
location {
....
}
location path {
....
}
location otherpath {
....
}
}
server {
....
}
# 负载均衡配置
upstream name {
....
}
}
nginx配置详解
#user用来指定nginx worker进程运行用户以及用户组,默认nobody账号运行
#user nobody;
#worker_processes指定nginx要开启的子进程数量,运行过程中监控每个进程消耗内存(一般几M~几十M不等)根据实际情况进行调整
worker_processes 1;
#error_log定义错误日志文件的位置及输出级别【debug / info / notice / warn / error / crit】
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid用来指定进程id的存储文件的位置
#pid logs/nginx.pid;
#worker_rlimit_nofile用于指定一个进程可以打开最多文件数量的描述
#worker_rlimit_nofile 1024;
events {
#指定最大可以同时接收的连接数量,这里一定要注意,最大连接数量是和worker processes共同决定的。
worker_connections 1024;
#指定nginx在收到一个新连接通知后尽可能多的接受更多的连接
#multi_accept on;
#指定了线程轮询的方法,如果是linux2.6+,使用epoll,如果是BSD如Mac请使用Kqueue
#use epoll;
}
http {
include 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 logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# 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;
# }
#}
}
使用普通用户安装nginx,必要依赖库需安装好
解压后进入解压目录
./configure \
--prefix=/work/software/nginx \
--user=appadmin\ #普通用户
修改work/software/nginx/sbin/nginx文件权限
chown root nginx
chmod +s nginx
启动步骤等同上
[root@Server1 conf]# grep -v "#" nginx.conf | grep -v "^$"
#全局生效,主要设置nginx的启动用户/组,启动的工作进程数量,Nginx的PID路径,日志路径等。
worker_processes 1; #默认启动一个工作进程
events { #events设置快,主要影响nginx服务器与用户的网络连接,比如是否允许同时接受多个网络连接,使用哪种事件驱动模型处理请求,每个工作进程可以同时支持的最大连接数,是否开启对多工作进程下的网络连接进行序列化等。
worker_connections 1024; #设置nginx可以接受的最大并发,多个进程只和
}
http { #http块是Nginx服务器配置中的重要部分,缓存、代理和日志格式定义等绝大多数功能和第三方模块都可以在这设置,http块可以包含多个server块,而一个server块中又可以包含多个location块,server块可以配置文件引入、MIME-Type定义、日志自定义、是否启用sendfile、连接超时时间和单个链接的请求上限等。
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
sendfile on; #是否调用 sendfile 函数(zero copy -->零copy方式)来输出文件,普通应用打开,可以大幅提升nginx的读文件性能,如果服务器是下载的就需要关闭,
keepalive_timeout 65; #长连接超时时间,单位是秒
server { #设置一个虚拟机主机,可以包含自己的全局快,同时也可以包含多个locating模块。比如本虚拟机监听的端口、本虚拟机的名称和IP配置,多个server 可以使用一个端口,比如都使用8090端口提供web服务、
listen 8090; #server的全局配置,配置监听的端口
server_name localhost; #本server的名称,当访问此名称的时候nginx会调用当前serevr内部的配置进程匹配。
location / { #location其实是server的一个指令,为nginx服务器提供比较多而且灵活的指令,都是在location中提现的,主要是基于nginx接受到的请求字符串,对用户请求的UIL进行匹配,并对特定的指令进行处理,包括地址重定向、数据缓存和应答控制等功能都是在这部分实现,另外很多第三方模块的配置也是在location模块中配置。
root html; #相当于默认页面的目录名称,默认是相对路径,可以使用绝对路径配置。
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html; #错误页面的文件名称
location = /50x.html { #location处理对应的不同错误码的页面定义到/50x.html,这个跟对应其server中定义的目录下。
root html; #定义默认页面所在的目录
}
}
}
nginx 反代mysql
https://www.cnblogs.com/heruiguo/p/8962243.html