随着服务器上配置的服务越来越多,只想输入域名访问,不想加上端口。准备用nginx监听80和443端口,将所有的域名请求转发到对应的服务模块
一:下载nginx
#下载解压包
wget http://nginx.org/download/nginx-1.10.2.tar.gz
#安装编译工具
yum install -y pcre pcre-devel openssl openssl-devel gcc
#解压
tar -zxvf nginx-1.10.2.tar.gz
cd nginx-1.10.2
二:编译nginx
#需要监控https时要加上--with-http_ssl_module,这样才支持SSL
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
#编译
make && make install
#启动服务
/usr/local/nginx/sbin/nginx
三:启动报错
错误
nginx: [emerg] getpwnam("www") failed
解决
解决方案一
在nginx.conf中 把user nobody的注释去掉既可
解决方案二
错误的原因是没有创建www这个用户,应该在服务器系统中添加www用户组和用户www,如下命令:
/usr/sbin/groupadd -f www
/usr/sbin/useradd -g www www
四:修改Nginx配置
#为了解决没有www账户的问题
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#配置负载均衡池
#hexo负载均衡池
upstream hexo_pool{
server www.52wss.com:4000;
}
#dubbo负载均衡池
upstream dubbo_pool{
server www.52wss.com:8080;
}
#hexo端口转发
server {
listen 80;
listen 443;
server_name www.hexo.52wss.com;
access_log logs/hexo.log;
error_log logs/hexo.error;
ssl_certificate /usr/local/nginx/cert/214309621550488.pem;
ssl_certificate_key /usr/local/nginx/cert/214309621550488.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;
# 将http转成https请求
if ($host ~* "^52wss.com$") {
rewrite ^/(.*)$ https://www.hexo.52wss.com/ permanent;
}
#将所有请求转发给hexo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://hexo_pool;
}
}
#dubbo端口转发
server {
listen 80;
listen 443 default ssl;
server_name www.dubbo.52wss.com;
access_log logs/dubbo.log;
error_log logs/dubbo.error;
ssl_certificate /usr/local/nginx/cert/214309621550488.pem;
ssl_certificate_key /usr/local/nginx/cert/214309621550488.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;
# 将http转成https请求
if ($host ~* "^52wss.com$") {
rewrite ^/(.*)$ https://www.dubbo.52wss.com/ permanent;
}
#将所有请求转发给dubbo_pool池的应用处理
location / {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://dubbo_pool;
}
}
}
1、当用户访问的域名是:www.dubbo.52wss.com 时,我们自动将其请求转发给端口号为 8080 的 Tomcat 应用处理。
2、当用户访问的域名是:www.hexo.52wss.com 时,我们自动将其请求转发给端口号为 4000 的 Tomcat 应用处理。