Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

Posted wood-life

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目相关的知识,希望对你有一定的参考价值。

Apache httpd服务配置详解
查看版本:httpd -v
Server version: Apache/2.4.33 (Unix)
Server built:   Apr  3 2018 17:54:07

文件路径:/etc/apache2/httpd.conf

# 服务目录(全局配置)用于指定Apache的安装路径,
# 此选项参数值在安装Apache时系统会自动把Apache的路径写入
ServerRoot "/usr"

# 设置互斥对象的目录
# Mutex default:/private/var/run

# 侦听web服务端口状态,默认Listen:80 侦听所有的地址的80端口
# 也可以写成IP地址的侦听形式,Listen 12.34.56.78:80
# 不写即默认的地址:0.0.0.0
<IfDefine SERVER_APP_HAS_DEFAULT_PORTS>
Listen 8080
</IfDefine>
<IfDefine !SERVER_APP_HAS_DEFAULT_PORTS>
Listen 80
</IfDefine>

# 动态共享对象支持 用于添加Apache一些动态模块
LoadModule authn_file_module libexec/apache2/mod_authn_file.so
#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_socache_module libexec/apache2/mod_authn_socache.so
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_dbd_module libexec/apache2/mod_authz_dbd.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
#LoadModule authnz_ldap_module libexec/apache2/mod_authnz_ldap.so
LoadModule access_compat_module libexec/apache2/mod_access_compat.so
LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_form_module libexec/apache2/mod_auth_form.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule allowmethods_module libexec/apache2/mod_allowmethods.so
LoadModule file_cache_module libexec/apache2/mod_file_cache.so
#LoadModule cache_module libexec/apache2/mod_cache.so
#LoadModule cache_disk_module libexec/apache2/mod_cache_disk.so
#LoadModule cache_socache_module libexec/apache2/mod_cache_socache.so
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
#LoadModule socache_dbm_module libexec/apache2/mod_socache_dbm.so
#LoadModule socache_memcache_module libexec/apache2/mod_socache_memcache.so
LoadModule watchdog_module libexec/apache2/mod_watchdog.so
LoadModule macro_module libexec/apache2/mod_macro.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule dumpio_module libexec/apache2/mod_dumpio.so
LoadModule echo_module libexec/apache2/mod_echo.so
LoadModule buffer_module libexec/apache2/mod_buffer.so
LoadModule data_module libexec/apache2/mod_data.so
LoadModule ratelimit_module libexec/apache2/mod_ratelimit.so
LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so
LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
LoadModule request_module libexec/apache2/mod_request.so
LoadModule include_module libexec/apache2/mod_include.so
LoadModule filter_module libexec/apache2/mod_filter.so
#LoadModule reflector_module libexec/apache2/mod_reflector.so
#LoadModule substitute_module libexec/apache2/mod_substitute.so
#LoadModule sed_module libexec/apache2/mod_sed.so
LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
#LoadModule deflate_module libexec/apache2/mod_deflate.so
LoadModule xml2enc_module libexec/apache2/mod_xml2enc.so
LoadModule proxy_html_module libexec/apache2/mod_proxy_html.so
LoadModule mime_module libexec/apache2/mod_mime.so
#LoadModule ldap_module libexec/apache2/mod_ldap.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
LoadModule log_debug_module libexec/apache2/mod_log_debug.so
#LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so
#LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
LoadModule usertrack_module libexec/apache2/mod_usertrack.so
##LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule version_module libexec/apache2/mod_version.so
LoadModule remoteip_module libexec/apache2/mod_remoteip.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
LoadModule proxy_fdpass_module libexec/apache2/mod_proxy_fdpass.so
LoadModule proxy_wstunnel_module libexec/apache2/mod_proxy_wstunnel.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
LoadModule proxy_express_module libexec/apache2/mod_proxy_express.so
LoadModule proxy_hcheck_module libexec/apache2/mod_proxy_hcheck.so
LoadModule session_module libexec/apache2/mod_session.so
LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so
LoadModule session_dbd_module libexec/apache2/mod_session_dbd.so
LoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so
#LoadModule slotmem_plain_module libexec/apache2/mod_slotmem_plain.so
LoadModule ssl_module libexec/apache2/mod_ssl.so
#LoadModule dialup_module libexec/apache2/mod_dialup.so
#LoadModule http2_module libexec/apache2/mod_http2.so
#LoadModule lbmethod_byrequests_module libexec/apache2/mod_lbmethod_byrequests.so
#LoadModule lbmethod_bytraffic_module libexec/apache2/mod_lbmethod_bytraffic.so
#LoadModule lbmethod_bybusyness_module libexec/apache2/mod_lbmethod_bybusyness.so
##LoadModule lbmethod_heartbeat_module libexec/apache2/mod_lbmethod_heartbeat.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
#LoadModule heartbeat_module libexec/apache2/mod_heartbeat.so
#LoadModule heartmonitor_module libexec/apache2/mod_heartmonitor.so
#LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
#LoadModule asis_module libexec/apache2/mod_asis.so
LoadModule info_module libexec/apache2/mod_info.so
LoadModule cgi_module libexec/apache2/mod_cgi.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
LoadModule imagemap_module libexec/apache2/mod_imagemap.so
LoadModule actions_module libexec/apache2/mod_actions.so
LoadModule speling_module libexec/apache2/mod_speling.so
LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php7_module libexec/apache2/libphp7.so
LoadModule perl_module libexec/apache2/mod_perl.so
LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so
#LoadModule php7_module /usr/local/opt/php/lib/httpd/modules/libphp7.so

<IfModule unixd_module>
# 指定Apache服务的运行用户和用户组,默认为:daemon
User _www
Group _www
</IfModule>

# 指定Apache服务管理员通知邮箱地址,可以默认也可以设置为自己真实邮箱
ServerAdmin [email protected]

# 指定Apache默认的服务器名及端口
ServerName localhost:80

# 用户对根目录下所有的访问权限控制,默认Apache对根目录都是拒绝访问
<Directory />
AllowOverride none
Require all denied
</Directory>

# 用于定义网站数据的保存路径,启动httpd后访问localhost显示It works是放在
# DocumentRoot/index.html的,修改index.html的内容定义自己的初始页面内容
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
Options FollowSymLinks Multiviews
MultiviewsMatch Any
AllowOverride None
Require all granted
</Directory>

# 设置Apache默认支持的首页,默认只支持:index.html首页,如要支持其他类型
# 的首页,需要在此区域添加:如index.php表示支持index.php类型首页
<IfModule dir_module>
DirectoryIndex index.html index.php index.jsp
</IfModule>

<FilesMatch "^.([Hh][Tt]|[Dd][Ss]_[Ss])">
Require all denied
</FilesMatch>
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>

<Files "rsrc">
Require all denied
</Files>
<DirectoryMatch ".*..namedfork">
Require all denied
</DirectoryMatch>

# 主要是针对Apache默认的日志级别,默认的访问日志路径,默认的错误日志
# 路径等相关设置,此选项内容默认即可
ErrorLog "/private/var/log/apache2/error_log"
LogLevel warn
<IfModule log_config_module>
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%h %l %u %t "%r" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
</IfModule>
CustomLog "/private/var/log/apache2/access_log" common
</IfModule>

# 主要包含一些URL重定向、别名、脚本别名等相关设置和说明
<IfModule alias_module>
# Redirect permanent /foo http://www.example.com/bar
# Alias /webpath /full/filesystem/path
# ScriptAlias: This controls which directories contain server scripts.
ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"
</IfModule>
<IfModule cgid_module>
#Scriptsock cgisock
</IfModule>
<Directory "/Library/WebServer/CGI-Executables">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule headers_module>
RequestHeader unset Proxy early
</IfModule>

# MIME媒体文件,以及相关http文件解析配置说明
<IfModule mime_module>
TypesConfig /private/etc/apache2/mime.types
AddType application/x-gzip .tgz
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType text/html .shtml
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#AddHandler cgi-script .cgi
#AddHandler type-map var
#AddOutputFilter INCLUDES .shtml
</IfModule>
#MIMEMagicFile /private/etc/apache2/magic

#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#MaxRanges unlimited
#EnableMMAP off
#EnableSendfile on
TraceEnable off

# 服务器池管理
Include /private/etc/apache2/extra/httpd-mpm.conf

# 多语言错误消息
#Include /private/etc/apache2/extra/httpd-multilang-errordoc.conf

# 动态目录列表形式配置
Include /private/etc/apache2/extra/httpd-autoindex.conf

# 语言设置
#Include /private/etc/apache2/extra/httpd-languages.conf

# 个人主页目录
#Include /private/etc/apache2/extra/httpd-userdir.conf

# 请求和配置上的实时信息
#Include /private/etc/apache2/extra/httpd-info.conf

# 虚拟主机
Include /private/etc/apache2/extra/httpd-vhosts.conf

# Apache Http Server手册
#Include /private/etc/apache2/extra/httpd-manual.conf

# 分布式创作和版本控制
#Include /private/etc/apache2/extra/httpd-dav.conf

# 多种类默认设置
#Include /private/etc/apache2/extra/httpd-default.conf

# mod_proxy_html 使其支持HTML4/XHTML1 配置补充
<IfModule proxy_html_module>
Include /private/etc/apache2/extra/proxy-html.conf
</IfModule>

# Secure (SSL/TLS) connections Apache服务器安全连接设置
#Include /private/etc/apache2/extra/httpd-ssl.conf
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include /private/etc/apache2/other/*.conf
 

我现在有个web项目和Java项目,我要部署到服务器上可以访问,该怎么做?

可以通过nginx,也可以通过Apache的虚拟主机服务 

 

确保启用了虚拟主机服务 

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so 
# 虚拟主机
Include /private/etc/apache2/extra/httpd-vhosts.conf

下面是虚拟主机配置说明 

# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
#如果每台运行Linux系统的服务器上只能运行一个网站,那么人气低、流量小的草根
#站长就要被迫承担着高昂的服务器租赁费用了,这显然也会造成硬件资源的浪费。在
#虚拟专用服务器(Virtual Private Server,VPS)与云计算技术诞生以前,IDC服务
#供应商为了能够更充分地利用服务器资源,同时也为了降低购买门槛,于是纷纷启用
#了虚拟主机功能。利用虚拟主机功能,可以把一台处于运行状态的物理服务器分割成
#多个“虚拟的服务器”。但是,该技术无法实现目前云主机技术的硬件资源隔离,让这
#些虚拟的服务器共同使用物理服务器的硬件资源,供应商只能限制硬盘的使用空间大
#小。出于各种考虑的因素(主要是价格低廉),目前依然有很多企业或个人站长在使
#用虚拟主机的形式来部署网站。
#Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号,实
#现提供多个网站同时为外部提供访问服务的技术。用户请求的资源不同,最终获取到
#的网页内容也各不相同。
#<VirtualHost *:80>
# ServerAdmin [email protected]
# DocumentRoot "/usr/docs/dummy-host.example.com"
# ServerName dummy-host.example.com
# ServerAlias www.dummy-host.example.com
# ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
# CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
#</VirtualHost>

# https://segmentfault.com/q/1010000008075477
# 访问404要修改hosts文件/etc/hosts,如果Forbidden查看文件夹是否有访问权限
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "/Users/wood/Micro/static"
ServerName micro.com
ServerAlias www.micro.com
Alias / /Users/wood/Micro/static/
<Directory /Users/wood/Micro/static>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Allow from all
</Directory>
</VirtualHost>
 

上面代码翻译过来就是:

服务监听80端口(浏览器访问http网站默认是80端口,https是443端口) 

ServerName micro.com 表示可以用micro.com访问DocumentRoot目录

ServerAlias www.micro.com 是micro.com的别名,前面加个www也是可以访问的

访问时可能遇到的问题

403权限问题问题,按照如上 Directory配置 All from all

404Not Found问题修改hosts文件,sudo vi /etc/hosts 给micro.com域名指定ip

如果按照上面的配置来,还是出现Forbidden的权限问题,那么请检查/Users/wood/Micro/static中的任何一个目录有访问权限

chmod  -R 777 /Users/wood/Micro/static/

but然并卵~

来看看日志:/etc/var/log/apache2/error_log

access to /en/about/index.html denied (filesystem path ‘/Users/wood/Micro‘) because search permissions are missing on a component of the path

逐个查看文件夹权限发现

技术图片 

everyone是无访问权限,修改为只读即可

 

--------------------------------------反向代理---------------------------------------


#反向代理
ProxyRequests Off

#payment
ProxyPass /payment http://127.0.0.1:8821
ProxyPassReverse /payment http://127.0.0.1:8821

<proxy *>
AllowOverride All
Order Deny,Allow
Allow from all
</proxy>

访问localhost/payment -> 实际上是访问了http://127.0.0.1:8821服务

更多关于Apache httpd反向代理的配置请见 https://www.cnblogs.com/wood-life/p/10318014.html

 

以上是关于Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目的主要内容,如果未能解决你的问题,请参考以下文章

Apache2.4之httpd.conf配置详解

linux下apache2的httpd.conf如何配置?

apache2.4配置

Apache2 httpd.conf 配置详解

Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

window下配置Apache2服务器