系统:cent OS 7.1
1:环境使用yum包管理工具安装依赖:
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
2:首次进入系统默认进去root用户可以先在这里下载
2.1 使用wget下载 nginx 安装 1.9.9版本 (源文件在Window下简称安装包)建议用1.9.9版本,其他版本试过proxy_pass https的时候加载nginx.conf失败说不支持https不知道是不是这个原因待核实
2.2: 使用wget下载 pcre 安装 8.35版本 (源文件在Window下简称安装包)
如果wget无法使用,安装一下就行yum install wget
3:进行编译和安装
3.1:进入pcre 下使用./configure来设置配置文件(正常来说编译的时候需要进行软件的配置,但是pcre是用来支持 Rewrite 功能的,就是均衡负载我这里不用到所以默认即可) 。
3.2:在使用make && make install 来编译和编译安装。 注意:如果修改了配置文件只用make即可,如果用make install会覆盖之前的文件
3.3: 进入nginx-1.9.9使用./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/root/pcre-8.35 来配置nginx的安装路径、设置PCRE库的源码路径、启用监控nginx运行情况的模块和https协议模块
3.4:make 编译
3.5:make install 编译安装
4:修改nginx.conf文件
user root;
worker_processes 2; #设置值和CPU核心数一致
error_log /usr/local/webserver/nginx/logs/nginx_error.log warn; #日志位置和日志级别
pid /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 65535;
events
{
use epoll;
worker_connections 65535;
}
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 /usr/local/webserver/nginx/logs/access.log main;
#charset gb2312;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 8m;
sendfile off;
tcp_nopush on;
keepalive_timeout 60;
tcp_nodelay on;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
#下面是server虚拟主机的配置
server
{
listen 80;#端口监听
server_name localhost;#域名
autoindex on;#是否允许访问目录
location / {
root /usr/local/webserver/nginx/html;
index index.html index.htm index.php;
access_log /usr/local/webserver/nginx/logs/access.log main;
autoindex on;
access_log on;
}
location /web-tycx {
#rewrite ^/test(.*)$ /$1 break;
proxy_set_header referer "XXXXXXXX";
proxy_set_header Host $proxy_host:server_port;
proxy_set_header X-Forward-For $remote_addr;
proxy_cookie_domain XXXXXXX XXXXXXX;
proxy_set_header Cookie $http_cookie;
proxy_pass XXXXXXXX;
access_log on;
access_log /usr/local/webserver/nginx/logs/access.log main;
}
location /aa/ {
rewrite ^/aa/(.*)$ /$1 break;
proxy_pass XXXXXXX;
access_log on;
}
#错误跳转
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/webserver/nginx/html;
autoindex on;
}
#禁止用户访问该目录
location ~ ^/(css)
{
return 403;
}
#禁止
location ~ .*\.(php|php5)?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_pass 198.44.191.41:3389;
fastcgi_index index.html;
include fastcgi.conf;
}
location ~ .*\.(js|css)?$
{
expires 1d;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|ico)$
{
expires 30d;
access_log on;
}
access_log on;
}
}
替换即可。通过 /usr/local/webserver/nginx/sbin/nginx -t 检测配置文件是否正常
5:注意事项
5.1:注意一下user 必须设置为root 否则打开网页会出现403无权限。也可以通过ps -ef | grep nginx 查看下现在nginx是通过什么用户运行,如果worker process是nobody那就是用户错了,改配置文件user为root。
5.2:运行nginx后访问还是无法连接的状态但是不是提示403,检查下防火墙是否打开了80端口,cnetOS 7用的是firewall命令跟6有点不一样,具体详细的可以看 VicterTian大神的(https://blog.youkuaiyun.com/TTTZZZTTTZZZ/article/details/81483204)。
查看防火墙开启了什么端口
firewall-cmd --list-ports
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
正常搞定配置完成,其他问题,等出现在更新