轉載他人的一篇文章,只為分享知識,我是java共享者,共創java未來!!
公司業務需要,要在Linux上同時運行一個Java項目和一個php項目。服務器外網IP綁定的一個頂級域名指向Java項目,此頂級域名解析出的一個二級域名指向php項目。設置Apache和Tomcat監聽不同端口。通過Nginx的請求轉發,把用戶請求(訪問鏈接)轉發到對應的端口去處理即可實現此需求。
反向代理:所謂的反向代理就是來自互聯網的請求不直接訪問web服務器,而是先訪問反向代理服務器(我們這里用Nginx),之后Nginx服務器將請求轉發到(內網環境)服務器。
一、准備工作
版本:Linux(Ubuntu 16.4)
1、軟件安裝(參考我的這幾篇博客)
安裝jdk、mysql,Tomcat
阿里雲服務器配置java生產環境jdk1.7+tomcat7.0+mysql5.5(一)
阿里雲服務器配置java生產環境jdk1.7+tomcat7.0+mysql5.5(二)
Linux(Ubuntu)安裝和完美卸載mysql詳細教程
安裝Apache:Linux(Ubuntu)安裝和完美卸載Apache詳細教程
安裝php:Linux(Ubuntu)安裝和完美卸載PHP7詳細教程
安裝Nginx:Linux(Ubuntu)安裝和完美卸載Nginx(是否開啟Nginx服務)
2、重要的配置文件位置
Tomcat的server.xml在:Tomcat安裝目錄/conf下
Apache的apache2.conf:在/etc/apache2下,Apache還有一些很重要的配置文件都在/etc/apache2下的子目錄里,后面會用到
Nginx的nginx.conf:在/usr/local/nginx/conf下,后面還會新建一些配置文件
二、配置
服務器上原來正在運行的是Java項目,訪問www.xxxx.com(我這里的頂級域名我就用xxxx代替),就會跳轉到Tomcat下webapps面的指定的項目。我這里是Java項目正在運行,需要添加php項目,我就不寫怎么讓Java項目運行了,就寫如何添加php項目。有些同學的情況可能是php正在運行,需要添加Java項目,有些同學可能是兩個都還沒運行起來。總之,你先讓一個項目先跑起來,再添加另一個,都是一樣的道理。
由於此次配置要修改的配置文件很多,我就把它們都下載下來了,在編輯器上編輯的,這樣好比較,查看。沒有用vim編輯。
關於端口:不管什么服務,都不能占用同一個端口,因為安裝服務之后就會默認啟動,此時它們的默認端口幾乎都是80。譬如服務器運行着Tomcat(監聽的80端口),此時又在安裝Nginx,安裝完就會自動啟動Nginx服務,啟動就會報錯:80端口被占用。此時只要去修改配置文件的監聽端口就好了。
關於默認的80端口:瀏覽網頁服務默認的端口號都是80,因此只需輸入網址即可,不用輸入“:80”了。
1、修改Tomcat的server.xml
我的文件位置:/usr/tomcat/apache-tomcat-8.5.11/conf/server.xml
找到你原來的監聽端口,默認8080。我這里把它改成了8099,讓Tomcat監聽8099端口。
這里的443是配置的https,有些同學可能沒有配,不用管。
2、修改Apache的配置文件
先把php項目上傳到”/var/www/html”目錄下,這是apache2默認的項目根目錄。
創建兩個日志文件:/etc/apache2/logs/access.log和/etc/apache2/logs/error.log
文件目錄:
修改/etc/apache2/ports.conf,把”Listen 80”修改為”Listen 8088 “。讓Apache監聽8088端口。可以看到在apache2.conf里面引入了ports.conf
在apache2.conf底部找到:
前面加上”#”,把這句注釋掉。為了直接在apache2.conf中配置虛擬主機,看起來直觀點。就不去sites-enabled/*.conf中配置了。
在apache2.conf中找到‘ #ServerRoot “/etc/apache2”‘,在下面添加如下配置信息:
DocumentRoot 這一行就是你的項目地址,我這里的項目名叫MetInfo。
ServerName 就是我的二級域名(我這里配置這個二級域名指向這個php項目)。
修改/etc/apache2/mods-enabled/dir.conf文件,把index.php放到最前面來:
3、修改Nginx的配置文件
我在/usr/local/nginx目錄下新建了一個文件夾dnconf來放我的自定義配置文件:
編輯/usr/local/nginx/conf/nginx.conf文件,我的整個nginx.conf文件內容如下:
user Michael;
worker_processes 1;
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
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;
keepalive_timeout 65;
include /usr/local/nginx/dnconf/*.conf;//引入自定義配置文件
}
在/usr/local/nginx/logs目錄下新建兩個訪問地址專用的日志文件:content.xxxx.com.access.log,xxxx.com.access.log
在dnconf目錄下新建兩個配置文件:javaset.conf和phpset.conf
javaset.conf:
server {
listen 80;
server_name www.xxxx.com localhost;
access_log logs/xxxx.com.access.log;
location /
{
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://127.0.0.1:8099;
}
}
phpset.conf
server {
listen 80;
server_name content.xxxx.com;
access_log logs/content.xxxx.com.access.log;
location /
{
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://127.0.0.1:8088;
}
}
Nginx只監聽80端口,不同的域名訪問進來控制跳轉到訪問不同的端口,就到不同的項目中去了。
Ngixn文檔:英文文檔,中文文檔
4、啟動服務
開啟Tomcat和Apache服務,最后啟動Nginx服務。
測試訪問ok,日志文件都有記錄。
有疑問的可以交流 QQ:839450693。
第一次感受到Nginx的強大之處!
---------------------
作者:Mistra丶
來源:CSDN
原文:https://blog.csdn.net/Axela30W/article/details/78865165
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
